diff options
Diffstat (limited to 'test/Transforms/CondProp/phisimplify2.ll')
-rw-r--r-- | test/Transforms/CondProp/phisimplify2.ll | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/test/Transforms/CondProp/phisimplify2.ll b/test/Transforms/CondProp/phisimplify2.ll new file mode 100644 index 0000000000000..03d12e3e4c972 --- /dev/null +++ b/test/Transforms/CondProp/phisimplify2.ll @@ -0,0 +1,46 @@ +; RUN: llvm-as < %s | opt -condprop | llvm-dis | not grep phi + +declare i1 @foo() + +define i32 @test(i32 %C) { + %Val = call i1 @foo( ) ; <i1> [#uses=2] + switch i32 %C, label %T1 [ + i32 4, label %T2 + i32 17, label %T3 + ] + +T1: ; preds = %0 + call void @a( ) + br label %Cont + +T2: ; preds = %0 + call void @b( ) + br label %Cont + +T3: ; preds = %0 + call void @c( ) + br label %Cont + +Cont: ; preds = %T3, %T2, %T1 + ;; PHI becomes dead after threading T2 + %C2 = phi i1 [ %Val, %T1 ], [ true, %T2 ], [ %Val, %T3 ] ; <i1> [#uses=1] + br i1 %C2, label %L2, label %F2 + +L2: ; preds = %Cont + call void @d( ) + ret i32 17 + +F2: ; preds = %Cont + call void @e( ) + ret i32 1 +} + +declare void @a() + +declare void @b() + +declare void @c() + +declare void @d() + +declare void @e() |