diff options
author | Jim Laskey <jlaskey@mac.com> | 2007-01-03 00:11:03 +0000 |
---|---|---|
committer | Jim Laskey <jlaskey@mac.com> | 2007-01-03 00:11:03 +0000 |
commit | 52ab904ee599aea86225dadb3dedd9fee46a70c8 (patch) | |
tree | 7edb8ad69da8405b95bfae8891710a5dc0bbc454 | |
parent | 56581b713d3df88055eba687aed3a84f3a140761 (diff) |
Vectors are not supported by ConstantInt::getAllOnesValue.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32827 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Transforms/Scalar/SCCP.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/lib/Transforms/Scalar/SCCP.cpp b/lib/Transforms/Scalar/SCCP.cpp index e55e313686..08c5d27cd5 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: |