Don't crash when dealing with INTMIN. This fixes PR585 and
authorChris Lattner <sabre@nondot.org>
Fri, 17 Jun 2005 02:05:55 +0000 (02:05 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 17 Jun 2005 02:05:55 +0000 (02:05 +0000)
Transforms/InstCombine/2005-06-16-RangeCrash.ll

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22234 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/InstructionCombining.cpp

index 321b032505c2b477c7d15ce161985cd7f4dabcae..d2827af3d74def1f6026682d295f7390cd576cdc 100644 (file)
@@ -2699,6 +2699,8 @@ Instruction *InstCombiner::visitSetCondInst(SetCondInst &I) {
             if (CI->isNullValue()) {       // (X / neg) op 0
               LoBound = AddOne(DivRHS);
               HiBound = cast<ConstantInt>(ConstantExpr::getNeg(DivRHS));
+              if (HiBound == DivRHS)
+                LoBound = 0;  // - INTMIN = INTMIN
             } else if (isPositive(CI)) {   // (X / neg) op pos
               HiOverflow = LoOverflow = ProdOV;
               if (!LoOverflow)