summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/StructurizeCFG/one-loop-multiple-backedges.ll
diff options
context:
space:
mode:
authorTom Stellard <thomas.stellard@amd.com>2015-02-04 20:49:44 +0000
committerTom Stellard <thomas.stellard@amd.com>2015-02-04 20:49:44 +0000
commit071ec90b68e8d778de5b341a4d235e81da028689 (patch)
tree9a1022c41140746aebd6b79f821449131174094c /llvm/test/Transforms/StructurizeCFG/one-loop-multiple-backedges.ll
parent987b0943c8c48f3bc21328d2c5c10c942778eaff (diff)
downloadbcm5719-llvm-071ec90b68e8d778de5b341a4d235e81da028689.tar.gz
bcm5719-llvm-071ec90b68e8d778de5b341a4d235e81da028689.zip
StructurizeCFG: Use a reverse post-order traversal
We were previously doing a post-order traversal and operating on the list in reverse, however this would occasionaly cause backedges for loops to be visited before some of the other blocks in the loop. We know use a reverse post-order traversal, which avoids this issue. The reverse post-order traversal is not completely ideal, so we need to manually fixup the list to ensure that inner loop backedges are visited before outer loop backedges. llvm-svn: 228186
Diffstat (limited to 'llvm/test/Transforms/StructurizeCFG/one-loop-multiple-backedges.ll')
-rw-r--r--llvm/test/Transforms/StructurizeCFG/one-loop-multiple-backedges.ll19
1 files changed, 10 insertions, 9 deletions
diff --git a/llvm/test/Transforms/StructurizeCFG/one-loop-multiple-backedges.ll b/llvm/test/Transforms/StructurizeCFG/one-loop-multiple-backedges.ll
index 8ebd47aefd1..668a1e99d81 100644
--- a/llvm/test/Transforms/StructurizeCFG/one-loop-multiple-backedges.ll
+++ b/llvm/test/Transforms/StructurizeCFG/one-loop-multiple-backedges.ll
@@ -11,28 +11,29 @@ bb:
bb3: ; preds = %bb7, %bb
%tmp = phi i64 [ 0, %bb ], [ %tmp8, %bb7 ]
%tmp4 = fcmp ult float %arg1, 3.500000e+00
-; CHECK: br i1 %tmp4, label %bb7, label %Flow
+; CHECK: %0 = xor i1 %tmp4, true
+; CHECK: br i1 %0, label %bb5, label %Flow
br i1 %tmp4, label %bb7, label %bb5
-; CHECK: Flow:
-; CHECK: br i1 %2, label %Flow1, label %bb3
-
-; CHECK: Flow1:
-; CHECK: br i1 %3, label %bb5, label %bb10
-
; CHECK: bb5:
bb5: ; preds = %bb3
%tmp6 = fcmp olt float 0.000000e+00, %arg2
-; CHECK: br label %bb10
+; CHECK: br label %Flow
br i1 %tmp6, label %bb10, label %bb7
+; CHECK: Flow:
+; CHECK: br i1 %3, label %bb7, label %Flow1
+
; CHECK: bb7
bb7: ; preds = %bb5, %bb3
%tmp8 = add nuw nsw i64 %tmp, 1
%tmp9 = icmp slt i64 %tmp8, 5
-; CHECK: br label %Flow
+; CHECK: br label %Flow1
br i1 %tmp9, label %bb3, label %bb10
+; CHECK: Flow1:
+; CHECK: br i1 %7, label %bb10, label %bb3
+
; CHECK: bb10
bb10: ; preds = %bb7, %bb5
%tmp11 = phi i32 [ 15, %bb5 ], [ 255, %bb7 ]
OpenPOWER on IntegriCloud