aboutsummaryrefslogtreecommitdiff
path: root/lib/Analysis/ScalarEvolution.cpp
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2010-08-31 20:58:44 +0000
committerDan Gohman <gohman@apple.com>2010-08-31 20:58:44 +0000
commit26125c65b926fa02c9aa9f62ae462e533fd6d883 (patch)
tree6ee6ff1d6186dcf9ff8e4ce99f1d320438e0b218 /lib/Analysis/ScalarEvolution.cpp
parente1aa33f2a2a9f8a378b3283b91d34c06487a4ca0 (diff)
Revert r112432. It appears to be exposing a problem in the emacs build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112638 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/ScalarEvolution.cpp')
-rw-r--r--lib/Analysis/ScalarEvolution.cpp13
1 files changed, 4 insertions, 9 deletions
diff --git a/lib/Analysis/ScalarEvolution.cpp b/lib/Analysis/ScalarEvolution.cpp
index 121c6e2a32..863f8a6540 100644
--- a/lib/Analysis/ScalarEvolution.cpp
+++ b/lib/Analysis/ScalarEvolution.cpp
@@ -3332,16 +3332,11 @@ const SCEV *ScalarEvolution::createSCEV(Value *V) {
// LLVM IR canonical form means we need only traverse the left operands.
SmallVector<const SCEV *, 4> AddOps;
AddOps.push_back(getSCEV(U->getOperand(1)));
- for (Value *Op = U->getOperand(0); ; Op = U->getOperand(0)) {
- unsigned Opcode = Op->getValueID() - Value::InstructionVal;
- if (Opcode != Instruction::Add && Opcode != Instruction::Sub)
- break;
+ for (Value *Op = U->getOperand(0);
+ Op->getValueID() == Instruction::Add + Value::InstructionVal;
+ Op = U->getOperand(0)) {
U = cast<Operator>(Op);
- const SCEV *Op1 = getSCEV(U->getOperand(1));
- if (Opcode == Instruction::Sub)
- AddOps.push_back(getNegativeSCEV(Op1));
- else
- AddOps.push_back(Op1);
+ AddOps.push_back(getSCEV(U->getOperand(1)));
}
AddOps.push_back(getSCEV(U->getOperand(0)));
return getAddExpr(AddOps);