diff options
| author | Sanjoy Das <sanjoy@playingwithpointers.com> | 2016-05-03 17:50:06 +0000 |
|---|---|---|
| committer | Sanjoy Das <sanjoy@playingwithpointers.com> | 2016-05-03 17:50:06 +0000 |
| commit | 7e7a5a050ab4f424a2a5832567f3ee2093aa0926 (patch) | |
| tree | a423efdb48194731e39dfea0a679941ec975bc9c /llvm/test/Transforms/LoopDeletion | |
| parent | 905fc27ebf9ec5a262dc320bb66e68f17d597248 (diff) | |
| download | bcm5719-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.ll | 58 |
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 +} |

