summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/LoopDeletion
diff options
context:
space:
mode:
authorSanjoy Das <sanjoy@playingwithpointers.com>2016-05-03 17:50:06 +0000
committerSanjoy Das <sanjoy@playingwithpointers.com>2016-05-03 17:50:06 +0000
commit7e7a5a050ab4f424a2a5832567f3ee2093aa0926 (patch)
treea423efdb48194731e39dfea0a679941ec975bc9c /llvm/test/Transforms/LoopDeletion
parent905fc27ebf9ec5a262dc320bb66e68f17d597248 (diff)
downloadbcm5719-llvm-7e7a5a050ab4f424a2a5832567f3ee2093aa0926.tar.gz
bcm5719-llvm-7e7a5a050ab4f424a2a5832567f3ee2093aa0926.zip
Use all_of instead of a raw loop; NFC
Added some tests despite being NFC, since it looks like nothing was exercising the "all incoming values to exit PHIs are same" logic. llvm-svn: 268407
Diffstat (limited to 'llvm/test/Transforms/LoopDeletion')
-rw-r--r--llvm/test/Transforms/LoopDeletion/multiple-exits.ll58
1 files changed, 56 insertions, 2 deletions
diff --git a/llvm/test/Transforms/LoopDeletion/multiple-exits.ll b/llvm/test/Transforms/LoopDeletion/multiple-exits.ll
index 6af413b49cd..dcf79057db5 100644
--- a/llvm/test/Transforms/LoopDeletion/multiple-exits.ll
+++ b/llvm/test/Transforms/LoopDeletion/multiple-exits.ll
@@ -2,13 +2,13 @@
; Checks whether dead loops with multiple exits can be eliminated
+define void @foo(i64 %n, i64 %m) nounwind {
+; CHECK-LABEL: @foo(
; CHECK: entry:
; CHECK-NEXT: br label %return
; CHECK: return:
; CHECK-NEXT: ret void
-
-define void @foo(i64 %n, i64 %m) nounwind {
entry:
br label %bb
@@ -24,3 +24,57 @@ bb2:
return:
ret void
}
+
+define i64 @bar(i64 %n, i64 %m) nounwind {
+; CHECK-LABEL: @bar(
+; CHECK: entry:
+; CHECK-NEXT: br label %return
+
+; CHECK: return:
+; CHECK-NEXT: ret i64 10
+
+entry:
+ br label %bb
+
+bb:
+ %x.0 = phi i64 [ 0, %entry ], [ %t0, %bb3 ]
+ %t0 = add i64 %x.0, 1
+ %t1 = icmp slt i64 %x.0, %n
+ br i1 %t1, label %bb2, label %return
+bb2:
+ %t2 = icmp slt i64 %x.0, %m
+ br i1 %t2, label %bb3, label %return
+bb3:
+ %t3 = icmp slt i64 %x.0, %m
+ br i1 %t3, label %bb, label %return
+
+return:
+ %x.lcssa = phi i64 [ 10, %bb ], [ 10, %bb2 ], [ 10, %bb3 ]
+ ret i64 %x.lcssa
+}
+
+define i64 @baz(i64 %n, i64 %m) nounwind {
+; CHECK-LABEL: @baz(
+; CHECK: return:
+; CHECK-NEXT: %x.lcssa = phi i64 [ 12, %bb ], [ 10, %bb2 ]
+; CHECK-NEXT: ret i64 %x.lcssa
+
+entry:
+ br label %bb
+
+bb:
+ %x.0 = phi i64 [ 0, %entry ], [ %t0, %bb3 ]
+ %t0 = add i64 %x.0, 1
+ %t1 = icmp slt i64 %x.0, %n
+ br i1 %t1, label %bb2, label %return
+bb2:
+ %t2 = icmp slt i64 %x.0, %m
+ br i1 %t2, label %bb3, label %return
+bb3:
+ %t3 = icmp slt i64 %x.0, %m
+ br i1 %t3, label %bb, label %return
+
+return:
+ %x.lcssa = phi i64 [ 12, %bb ], [ 10, %bb2 ], [ 10, %bb3 ]
+ ret i64 %x.lcssa
+}
OpenPOWER on IntegriCloud