[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / Transforms / LoopSimplifyCFG / handle_dead_exits.ll
blob8d8a2385f1d8ce9e9f4620b14183146100e7d2f1
1 ; RUN: opt -S -enable-loop-simplifycfg-term-folding=true -loop-simplifycfg %s | FileCheck %s
2 ; RUN: opt -S -enable-loop-simplifycfg-term-folding=true -passes='require<domtree>,loop(loop-simplifycfg)' %s | FileCheck %s
4 declare i32* @fake_personality_function()
5 declare void @foo()
7 define i32 @test_remove_lpad(i1 %exitcond) personality i32* ()* @fake_personality_function {
8 ; CHECK-LABEL: @test_remove_lpad(
9 entry:
10   br label %for.body
12 for.body:
13   br i1 0, label %never, label %next
15 next:
16   br label %latch
18 latch:
19   br i1 %exitcond, label %exit, label %for.body
21 exit:
22   ret i32 0
24 never:
25   invoke void @foo() to label %next unwind label %never-unwind
27 never-unwind:
28 ; CHECK: never-unwind:
29 ; CHECK-NEXT: unreachable
30   %res = landingpad token cleanup
31   unreachable
34 define i32 @test_remove_phi_lpad(i1 %exitcond) personality i32* ()* @fake_personality_function {
35 ; CHECK-LABEL: @test_remove_phi_lpad(
36 entry:
37   br label %for.body
39 for.body:
40   br i1 0, label %never, label %next
42 next:
43   br label %latch
45 latch:
46   br i1 %exitcond, label %exit, label %for.body
48 exit:
49   ret i32 0
51 never:
52   invoke void @foo() to label %next unwind label %never-unwind
54 never-unwind:
55 ; CHECK: never-unwind:
56 ; CHECK-NEXT: ret i32 undef
57   %p = phi i32 [1, %never]
58   %res = landingpad token cleanup
59   ret i32 %p
62 define i32 @test_split_remove_phi_lpad_(i1 %exitcond) personality i32* ()* @fake_personality_function {
63 ; CHECK-LABEL: @test_split_remove_phi_lpad_(
64 entry:
65   invoke void @foo() to label %for.body unwind label %unwind-bb
67 for.body:
68   br i1 0, label %never, label %next
70 next:
71   br label %latch
73 latch:
74   br i1 %exitcond, label %exit, label %for.body
76 exit:
77   ret i32 0
79 never:
80   invoke void @foo() to label %next unwind label %unwind-bb
82 unwind-bb:
83 ; CHECK: unwind-bb.loopexit:
84 ; CHECK-NEXT: br label %unwind-bb
85   %p = phi i32 [1, %never], [2, %entry]
86   %res = landingpad token cleanup
87   ret i32 %p