[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / Transforms / Inline / 2007-04-15-InlineEH.ll
blob482c4efcf09cca0155c65ec9b4fddc789577ddc1
1 ; RUN: opt < %s -inline -S | FileCheck %s
2 ; RUN: opt < %s -passes='cgscc(inline)' -S | FileCheck %s
3 ; PR1335
5 target triple = "i686-pc-linux-gnu"
7 declare i32 @__gxx_personality_v0(...)
9 declare void @a()
11 declare void @b()
13 declare void @c()
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
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()
30 invcont1:
31   invoke void @b() to label %invcont2 unwind label %cleanup
32 ; CHECK-NOT: {{call|invoke}}
33 ; CHECK: invoke void @b()
35 invcont2:
36   invoke void @c() to label %invcont3 unwind label %cleanup
37 ; CHECK-NOT: {{call|invoke}}
38 ; CHECK: invoke void @c()
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}}
46 invcont4:
47   ret void
49 cleanup:
50   %ex = landingpad {i8*, i32} cleanup
51   resume { i8*, i32 } %ex
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}}
68   ret void