From 2c47368a7d843486a59e12a08595297003e3cb2d Mon Sep 17 00:00:00 2001 From: Duncan Sands Date: Thu, 28 Jan 2010 17:22:42 +0000 Subject: 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 --- .../Transforms/InstCombine/2010-01-28-NegativeSRem.ll | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 test/Transforms/InstCombine/2010-01-28-NegativeSRem.ll (limited to 'test/Transforms/InstCombine/2010-01-28-NegativeSRem.ll') 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 ] ; [#uses=2] + %rem = srem i32 %x, 2 ; [#uses=1] + %t = icmp eq i32 %rem, -1 ; [#uses=1] + br i1 %t, label %BB2, label %BB1 +; CHECK-NOT: br i1 false + +BB2: ; preds = %BB1 +; CHECK: BB2: + ret i32 %x +} -- cgit v1.2.3