diff options
author | Michael Kuperstein <mkuper@google.com> | 2016-12-16 21:23:59 +0000 |
---|---|---|
committer | Michael Kuperstein <mkuper@google.com> | 2016-12-16 21:23:59 +0000 |
commit | 3ca147ea3d8c2364542c2e4c2b7ba83fdf5e6dcd (patch) | |
tree | f56a38a5418f67dc6c144643b9fe52b62cdd780c /llvm/test/Transforms/LoopSimplify | |
parent | 35f6d66b0d4da029fbd2d6f97cd9121d59d20322 (diff) | |
download | bcm5719-llvm-3ca147ea3d8c2364542c2e4c2b7ba83fdf5e6dcd.tar.gz bcm5719-llvm-3ca147ea3d8c2364542c2e4c2b7ba83fdf5e6dcd.zip |
Preserve loop metadata when folding branches to a common destination.
Differential Revision: https://reviews.llvm.org/D27830
llvm-svn: 289992
Diffstat (limited to 'llvm/test/Transforms/LoopSimplify')
-rw-r--r-- | llvm/test/Transforms/LoopSimplify/preserve-llvm-loop-metadata.ll | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/llvm/test/Transforms/LoopSimplify/preserve-llvm-loop-metadata.ll b/llvm/test/Transforms/LoopSimplify/preserve-llvm-loop-metadata.ll index bd27794d193..c1397606487 100644 --- a/llvm/test/Transforms/LoopSimplify/preserve-llvm-loop-metadata.ll +++ b/llvm/test/Transforms/LoopSimplify/preserve-llvm-loop-metadata.ll @@ -1,5 +1,6 @@ ; RUN: opt -loop-simplify -S < %s | FileCheck %s +; CHECK-LABEL: @test1 define void @test1(i32 %n) { entry: br label %while.cond @@ -35,6 +36,33 @@ while.end: ; preds = %while.cond ; CHECK: if.else ; CHECK-NOT: br {{.*}}!llvm.loop{{.*}} +; CHECK-LABEL: @test2 +; CHECK: for.body: +; CHECK: br i1 %{{.*}}, label %for.body, label %cleanup.loopexit, !llvm.loop !0 +define void @test2(i32 %k) { +entry: + %cmp9 = icmp sgt i32 %k, 0 + br i1 %cmp9, label %for.body.preheader, label %cleanup + +for.body.preheader: ; preds = %entry + br label %for.body + +for.cond: ; preds = %for.body + %cmp = icmp slt i32 %inc, %k + br i1 %cmp, label %for.body, label %cleanup.loopexit, !llvm.loop !0 + +for.body: ; preds = %for.body.preheader, %for.cond + %i.010 = phi i32 [ %inc, %for.cond ], [ 0, %for.body.preheader ] + %cmp3 = icmp sgt i32 %i.010, 3 + %inc = add nsw i32 %i.010, 1 + br i1 %cmp3, label %cleanup.loopexit, label %for.cond + +cleanup.loopexit: ; preds = %for.body, %for.cond + br label %cleanup + +cleanup: ; preds = %cleanup.loopexit, %entry + ret void +} !0 = distinct !{!0, !1} !1 = !{!"llvm.loop.distribute.enable", i1 true} |