diff options
-rw-r--r-- | llvm/test/Transforms/InstSimplify/phi.ll | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/llvm/test/Transforms/InstSimplify/phi.ll b/llvm/test/Transforms/InstSimplify/phi.ll index b0040ffeb03..242b7ab87bf 100644 --- a/llvm/test/Transforms/InstSimplify/phi.ll +++ b/llvm/test/Transforms/InstSimplify/phi.ll @@ -1,10 +1,21 @@ -; NOTE: Assertions have been autogenerated by update_test_checks.py +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt < %s -instsimplify -S | FileCheck %s ; PR12189 define i1 @test1(i32 %x) { ; CHECK-LABEL: @test1( -; CHECK: ret i1 %e +; CHECK-NEXT: br i1 true, label [[A:%.*]], label [[B:%.*]] +; CHECK: a: +; CHECK-NEXT: [[AA:%.*]] = or i32 [[X:%.*]], 10 +; CHECK-NEXT: br label [[C:%.*]] +; CHECK: b: +; CHECK-NEXT: [[BB:%.*]] = or i32 [[X]], 10 +; CHECK-NEXT: br label [[C]] +; CHECK: c: +; CHECK-NEXT: [[CC:%.*]] = phi i32 [ [[BB]], [[B]] ], [ [[AA]], [[A]] ] +; CHECK-NEXT: [[D:%.*]] = urem i32 [[CC]], 2 +; CHECK-NEXT: [[E:%.*]] = icmp eq i32 [[D]], 0 +; CHECK-NEXT: ret i1 [[E]] ; br i1 true, label %a, label %b @@ -22,3 +33,22 @@ c: %e = icmp eq i32 %d, 0 ret i1 %e } + +; D63489 - https://reviews.llvm.org/D63489 +; If this single-value phi form needs to be preserved to enable +; further analysis, then -instsimplify should not be running? + +define i32 @lcssa-phi(i32 %x) { +; CHECK-LABEL: @lcssa-phi( +; CHECK-NEXT: entry: +; CHECK-NEXT: br label [[END:%.*]] +; CHECK: end: +; CHECK-NEXT: ret i32 [[X:%.*]] +; +entry: + br label %end + +end: + %counter.lcssa = phi i32 [ %x, %entry ] + ret i32 %counter.lcssa +} |