diff options
author | Dan Gohman <gohman@apple.com> | 2008-06-18 16:37:11 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2008-06-18 16:37:11 +0000 |
commit | 66d341298c688a3674bf5188c9b17dd7aaf13208 (patch) | |
tree | a63d728c79b8cef7f8e219e7a75c0137e14c4112 /lib | |
parent | 7b560c4218a3eac6af49b43d14003e30c9024b94 (diff) | |
download | external_llvm-66d341298c688a3674bf5188c9b17dd7aaf13208.zip external_llvm-66d341298c688a3674bf5188c9b17dd7aaf13208.tar.gz external_llvm-66d341298c688a3674bf5188c9b17dd7aaf13208.tar.bz2 |
Move SCEVExpander::visitAddExpr out-of-line.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52464 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Analysis/ScalarEvolutionExpander.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/Analysis/ScalarEvolutionExpander.cpp b/lib/Analysis/ScalarEvolutionExpander.cpp index e7bc3f2..e32b21e 100644 --- a/lib/Analysis/ScalarEvolutionExpander.cpp +++ b/lib/Analysis/ScalarEvolutionExpander.cpp @@ -99,6 +99,16 @@ Value *SCEVExpander::InsertBinop(Instruction::BinaryOps Opcode, Value *LHS, return BinaryOperator::Create(Opcode, LHS, RHS, "tmp", InsertPt); } +Value *SCEVExpander::visitAddExpr(SCEVAddExpr *S) { + Value *V = expand(S->getOperand(S->getNumOperands()-1)); + + // Emit a bunch of add instructions + for (int i = S->getNumOperands()-2; i >= 0; --i) + V = InsertBinop(Instruction::Add, V, expand(S->getOperand(i)), + InsertPt); + return V; +} + Value *SCEVExpander::visitMulExpr(SCEVMulExpr *S) { int FirstOp = 0; // Set if we should emit a subtract. if (SCEVConstant *SC = dyn_cast<SCEVConstant>(S->getOperand(0))) |