Home | History | Annotate | Download | only in Inline
      1 ; RUN: opt < %s -inline -S | FileCheck %s
      2 ; RUN: opt < %s -passes='cgscc(inline)' -S | FileCheck %s
      3 ; PR1335
      4 
      5 target triple = "i686-pc-linux-gnu"
      6 
      7 declare i32 @__gxx_personality_v0(...)
      8 
      9 declare void @a()
     10 
     11 declare void @b()
     12 
     13 declare void @c()
     14 
     15 define void @f() {
     16 ; CHECK-LABEL: define void @f()
     17 entry:
     18   call void asm "rdtsc\0A\09movl %eax, $0\0A\09movl %edx, $1", "=*imr,=*imr,~{dirflag},~{fpsr},~{flags},~{dx},~{ax}"( i32* null, i32* null ) nounwind
     19 ; CHECK: call void asm
     20   unreachable
     21 }
     22 
     23 define void @g() personality i32 (...)* @__gxx_personality_v0 {
     24 ; CHECK-LABEL: define void @g() personality i32 (...)* @__gxx_personality_v0
     25 entry:
     26   invoke void @a() to label %invcont1 unwind label %cleanup
     27 ; CHECK-NOT: {{call|invoke}}
     28 ; CHECK: invoke void @a()
     29 
     30 invcont1:
     31   invoke void @b() to label %invcont2 unwind label %cleanup
     32 ; CHECK-NOT: {{call|invoke}}
     33 ; CHECK: invoke void @b()
     34 
     35 invcont2:
     36   invoke void @c() to label %invcont3 unwind label %cleanup
     37 ; CHECK-NOT: {{call|invoke}}
     38 ; CHECK: invoke void @c()
     39 
     40 invcont3:
     41   invoke void @f() to label %invcont4 unwind label %cleanup
     42 ; CHECK-NOT: {{call|invoke}}
     43 ; CHECK: call void asm
     44 ; CHECK-NOT: {{call|invoke}}
     45 
     46 invcont4:
     47   ret void
     48 
     49 cleanup:
     50   %ex = landingpad {i8*, i32} cleanup
     51   resume { i8*, i32 } %ex
     52 }
     53 
     54 define void @h() {
     55 ; CHECK-LABEL: define void @h() personality i32 (...)* @__gxx_personality_v0
     56 entry:
     57   call void @g()
     58 ; CHECK-NOT: {{call|invoke}}
     59 ; CHECK: invoke void @a()
     60 ; CHECK-NOT: {{call|invoke}}
     61 ; CHECK: invoke void @b()
     62 ; CHECK-NOT: {{call|invoke}}
     63 ; CHECK: invoke void @c()
     64 ; CHECK-NOT: {{call|invoke}}
     65 ; CHECK: call void asm
     66 ; CHECK-NOT: {{call|invoke}}
     67 
     68   ret void
     69 }
     70