Constant exprs are not efficiently negatable in practice. This disables

turning X - (constantexpr) into X + (-constantexpr) among other things.

llvm-svn: 18935
This commit is contained in:
Chris Lattner 2004-12-14 20:08:06 +00:00
parent c936ad1208
commit 9ad0d55025
1 changed files with 3 additions and 4 deletions

View File

@ -309,10 +309,9 @@ static inline Value *dyn_castNegVal(Value *V) {
if (BinaryOperator::isNeg(V))
return BinaryOperator::getNegArgument(cast<BinaryOperator>(V));
// Constants can be considered to be negated values if they can be folded...
if (Constant *C = dyn_cast<Constant>(V))
if (!isa<UndefValue>(C))
return ConstantExpr::getNeg(C);
// Constants can be considered to be negated values if they can be folded.
if (ConstantInt *C = dyn_cast<ConstantInt>(V))
return ConstantExpr::getNeg(C);
return 0;
}