summaryrefslogtreecommitdiff
path: root/test/Transforms/InstCombine
diff options
context:
space:
mode:
authorDuncan Sands <baldrick@free.fr>2010-01-28 17:22:42 +0000
committerDuncan Sands <baldrick@free.fr>2010-01-28 17:22:42 +0000
commit2c47368a7d843486a59e12a08595297003e3cb2d (patch)
tree8cc8af56920b99aed45368d055c14ccfd363a009 /test/Transforms/InstCombine
parent21569cddc1a9df3bf4a3c9e06977273f1eba3e63 (diff)
downloadllvm-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')
-rw-r--r--test/Transforms/InstCombine/2010-01-28-NegativeSRem.ll19
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
+}