Fix code to match comment. Fixes PR11340, a regression from r143209.
authorEli Friedman <eli.friedman@gmail.com>
Tue, 8 Nov 2011 21:08:02 +0000 (21:08 +0000)
committerEli Friedman <eli.friedman@gmail.com>
Tue, 8 Nov 2011 21:08:02 +0000 (21:08 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144121 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/InstructionSimplify.cpp
test/Transforms/InstSimplify/compare.ll

index c1416328b742ee68f48ac43b0e64a36862e6daac..2f41f7295689e55972f158b19218e35d6240d497 100644 (file)
@@ -1612,7 +1612,7 @@ static Value *SimplifyICmpInst(unsigned Predicate, Value *LHS, Value *RHS,
       Lower = (-Upper) + 1;
     } else if (match(LHS, m_UDiv(m_ConstantInt(CI2), m_Value()))) {
       // 'udiv CI2, x' produces [0, CI2].
-      Upper = CI2->getValue();
+      Upper = CI2->getValue() + 1;
     } else if (match(LHS, m_UDiv(m_Value(), m_ConstantInt(CI2)))) {
       // 'udiv x, CI2' produces [0, UINT_MAX / CI2].
       APInt NegOne = APInt::getAllOnesValue(Width);
index db5e72f9db4b03c9f3b7205f20ec6e721ffc74c8..9f3dffe603f132eda876d735f5b6991ac232b94f 100644 (file)
@@ -342,6 +342,16 @@ define i1 @udiv5(i32 %X) {
 ; CHECK: ret i1 false
 }
 
+; PR11340
+define i1 @udiv6(i32 %X) nounwind {
+; CHECK: @udiv6
+  %A = udiv i32 1, %X
+  %C = icmp eq i32 %A, 0
+  ret i1 %C
+; CHECK: ret i1 %C
+}
+
+
 define i1 @sdiv1(i32 %X) {
 ; CHECK: @sdiv1
   %A = sdiv i32 %X, 1000000