diff options
author | Duncan Sands <baldrick@free.fr> | 2010-01-28 17:22:42 +0000 |
---|---|---|
committer | Duncan Sands <baldrick@free.fr> | 2010-01-28 17:22:42 +0000 |
commit | 2c47368a7d843486a59e12a08595297003e3cb2d (patch) | |
tree | 8cc8af56920b99aed45368d055c14ccfd363a009 /test/Transforms/InstCombine/2010-01-28-NegativeSRem.ll | |
parent | 21569cddc1a9df3bf4a3c9e06977273f1eba3e63 (diff) | |
download | llvm-2c47368a7d843486a59e12a08595297003e3cb2d.tar.gz llvm-2c47368a7d843486a59e12a08595297003e3cb2d.tar.bz2 llvm-2c47368a7d843486a59e12a08595297003e3cb2d.tar.xz |
Fix PR6165. The bug was that LHSKnownZero was being and'd with DemandedMask
when it should have been and'd with LowBits. Fix that and while there beef
up the logic in the case of a negative LHS.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94745 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms/InstCombine/2010-01-28-NegativeSRem.ll')
-rw-r--r-- | test/Transforms/InstCombine/2010-01-28-NegativeSRem.ll | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/test/Transforms/InstCombine/2010-01-28-NegativeSRem.ll b/test/Transforms/InstCombine/2010-01-28-NegativeSRem.ll new file mode 100644 index 0000000000..4ab9bf0c3f --- /dev/null +++ b/test/Transforms/InstCombine/2010-01-28-NegativeSRem.ll @@ -0,0 +1,19 @@ +; RUN: opt < %s -instcombine -S | FileCheck %s +; PR6165 + +define i32 @f() { +entry: + br label %BB1 + +BB1: ; preds = %BB1, %entry +; CHECK: BB1: + %x = phi i32 [ -29, %entry ], [ 0, %BB1 ] ; <i32> [#uses=2] + %rem = srem i32 %x, 2 ; <i32> [#uses=1] + %t = icmp eq i32 %rem, -1 ; <i1> [#uses=1] + br i1 %t, label %BB2, label %BB1 +; CHECK-NOT: br i1 false + +BB2: ; preds = %BB1 +; CHECK: BB2: + ret i32 %x +} |