An instruction's operands aren't necessarily instructions or constants. They

could be arguments, for example.

No testcase because this is a bug-fix broken out of a larger optimization patch.

llvm-svn: 141951
This commit is contained in:
Nick Lewycky 2011-10-14 09:38:46 +00:00
parent dcaaa21fbe
commit a447e0f38f
1 changed files with 2 additions and 1 deletions

View File

@ -4764,7 +4764,8 @@ static Constant *EvaluateExpression(Value *V, const Loop *L,
for (unsigned i = 0, e = I->getNumOperands(); i != e; ++i) {
Instruction *Operand = dyn_cast<Instruction>(I->getOperand(i));
if (!Operand) {
Operands[i] = cast<Constant>(I->getOperand(i));
Operands[i] = dyn_cast<Constant>(I->getOperand(i));
if (!Operands[i]) return 0;
continue;
}
Constant *C = EvaluateExpression(Operand, L, Vals, TD);