summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/SimplifyCFG
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-12-14 08:01:53 +0000
committerChris Lattner <sabre@nondot.org>2010-12-14 08:01:53 +0000
commit335f0e4ad4ad19737b378f0f46e95c34e1b8f6a1 (patch)
tree44aa9a50884777619fc0ec906220222b8f46d666 /llvm/test/Transforms/SimplifyCFG
parentdc20a7d38ca03a222efb0aba12cab4c01abb09ef (diff)
downloadbcm5719-llvm-335f0e4ad4ad19737b378f0f46e95c34e1b8f6a1.tar.gz
bcm5719-llvm-335f0e4ad4ad19737b378f0f46e95c34e1b8f6a1.zip
fix two significant issues with FoldTwoEntryPHINode:
first, it can kick in on blocks whose conditions have been folded to a constant, even though one of the edges will be trivially folded. second, it doesn't clean up the "if diamond" that it just eliminated away. This is a problem because other simplifycfg xforms kick in depending on the order of block visitation, causing pointless work. llvm-svn: 121762
Diffstat (limited to 'llvm/test/Transforms/SimplifyCFG')
-rw-r--r--llvm/test/Transforms/SimplifyCFG/PhiBlockMerge.ll7
1 files changed, 5 insertions, 2 deletions
diff --git a/llvm/test/Transforms/SimplifyCFG/PhiBlockMerge.ll b/llvm/test/Transforms/SimplifyCFG/PhiBlockMerge.ll
index a648efd1740..c28d0bac375 100644
--- a/llvm/test/Transforms/SimplifyCFG/PhiBlockMerge.ll
+++ b/llvm/test/Transforms/SimplifyCFG/PhiBlockMerge.ll
@@ -1,12 +1,14 @@
; Test merging of blocks that only have PHI nodes in them
;
-; RUN: opt < %s -simplifycfg -S | not grep N:
+; RUN: opt < %s -simplifycfg -S | FileCheck %s
;
define i32 @test(i1 %a, i1 %b) {
-; <label>:0
+; CHECK: br i1 %a
br i1 %a, label %M, label %O
O: ; preds = %0
+; CHECK: select i1 %b, i32 0, i32 1
+; CHECK-NOT: phi
br i1 %b, label %N, label %Q
Q: ; preds = %O
br label %N
@@ -15,6 +17,7 @@ N: ; preds = %Q, %O
%Wp = phi i32 [ 0, %O ], [ 1, %Q ] ; <i32> [#uses=1]
br label %M
M: ; preds = %N, %0
+; CHECK: %W = phi i32
%W = phi i32 [ %Wp, %N ], [ 2, %0 ] ; <i32> [#uses=1]
%R = add i32 %W, 1 ; <i32> [#uses=1]
ret i32 %R
OpenPOWER on IntegriCloud