diff options
Diffstat (limited to 'test/Transforms/SimplifyCFG/PhiBlockMerge2.ll')
-rw-r--r-- | test/Transforms/SimplifyCFG/PhiBlockMerge2.ll | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/test/Transforms/SimplifyCFG/PhiBlockMerge2.ll b/test/Transforms/SimplifyCFG/PhiBlockMerge2.ll new file mode 100644 index 0000000..fb5d600 --- /dev/null +++ b/test/Transforms/SimplifyCFG/PhiBlockMerge2.ll @@ -0,0 +1,27 @@ +; Test merging of blocks that only have PHI nodes in them. This tests the case +; where the mergedinto block doesn't have any PHI nodes, and is in fact +; dominated by the block-to-be-eliminated +; +; RUN: opt < %s -simplifycfg -S | not grep N: +; + +declare i1 @foo() + +define i32 @test(i1 %a, i1 %b) { + %c = call i1 @foo() + br i1 %c, label %N, label %P +P: + %d = call i1 @foo() + br i1 %d, label %N, label %Q +Q: + br label %N +N: + %W = phi i32 [0, %0], [1, %Q], [2, %P] + ; This block should be foldable into M + br label %M + +M: + %R = add i32 %W, 1 + ret i32 %R +} + |