From: Jim Laskey Date: Wed, 3 Jan 2007 00:11:03 +0000 (+0000) Subject: Vectors are not supported by ConstantInt::getAllOnesValue. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=52ab904ee599aea86225dadb3dedd9fee46a70c8;p=oota-llvm.git Vectors are not supported by ConstantInt::getAllOnesValue. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32827 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/Scalar/SCCP.cpp b/lib/Transforms/Scalar/SCCP.cpp index e55e313686d..08c5d27cd51 100644 --- a/lib/Transforms/Scalar/SCCP.cpp +++ b/lib/Transforms/Scalar/SCCP.cpp @@ -88,6 +88,7 @@ public: if (LatticeValue != constant) { if (LatticeValue == undefined) { LatticeValue = constant; + assert(V && "Marking constant with NULL"); ConstantVal = V; } else { assert(LatticeValue == forcedconstant && @@ -699,14 +700,15 @@ void SCCPSolver::visitBinaryOperator(Instruction &I) { // Could annihilate value. if (I.getOpcode() == Instruction::And) markConstant(IV, &I, Constant::getNullValue(I.getType())); - else - markConstant(IV, &I, ConstantInt::getAllOnesValue(I.getType())); + else if (Constant *Ones = ConstantInt::getAllOnesValue(I.getType())) { + markConstant(IV, &I, Ones); + } return; } else { if (I.getOpcode() == Instruction::And) { if (NonOverdefVal->getConstant()->isNullValue()) { markConstant(IV, &I, NonOverdefVal->getConstant()); - return; // X or 0 = -1 + return; // X and 0 = 0 } } else { if (ConstantIntegral *CI = @@ -1231,8 +1233,11 @@ bool SCCPSolver::ResolvedUndefsIn(Function &F) { case Instruction::Or: // undef | X -> -1. X could be -1. - markForcedConstant(LV, I, ConstantInt::getAllOnesValue(ITy)); - return true; + if (Constant *Ones = ConstantInt::getAllOnesValue(ITy)) { + markForcedConstant(LV, I, Ones); + return true; + } + break; case Instruction::SDiv: case Instruction::UDiv: