diff options
author | Chris Lattner <sabre@nondot.org> | 2007-01-30 23:52:44 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2007-01-30 23:52:44 +0000 |
commit | 2e3a1d137cf1e426ec44621329e02d6e283d0bb8 (patch) | |
tree | 100591d50fcae3380fbce7be13a5a3a659c72c88 /lib/Analysis/ScalarEvolution.cpp | |
parent | c3ce6893742f0f2e20bffbbd7fb43b347fb0ece7 (diff) |
The local "ConstantFold" method is now just a watered down version of
ConstantFoldInstOperands. Switch to ConstantFoldInstOperands and remove
ConstantFold.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33683 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/ScalarEvolution.cpp')
-rw-r--r-- | lib/Analysis/ScalarEvolution.cpp | 40 |
1 files changed, 3 insertions, 37 deletions
diff --git a/lib/Analysis/ScalarEvolution.cpp b/lib/Analysis/ScalarEvolution.cpp index a30eeea4f1..75dabf7cad 100644 --- a/lib/Analysis/ScalarEvolution.cpp +++ b/lib/Analysis/ScalarEvolution.cpp @@ -1746,41 +1746,6 @@ static bool CanConstantFold(const Instruction *I) { return false; } -/// ConstantFold - Constant fold an instruction of the specified type with the -/// specified constant operands. This function may modify the operands vector. -static Constant *ConstantFold(const Instruction *I, - std::vector<Constant*> &Operands) { - if (isa<BinaryOperator>(I) || isa<ShiftInst>(I)) - return ConstantExpr::get(I->getOpcode(), Operands[0], Operands[1]); - - if (isa<CastInst>(I)) - return ConstantExpr::getCast(I->getOpcode(), Operands[0], I->getType()); - - switch (I->getOpcode()) { - case Instruction::Select: - return ConstantExpr::getSelect(Operands[0], Operands[1], Operands[2]); - case Instruction::Call: - if (Function *GV = dyn_cast<Function>(Operands[0])) { - return ConstantFoldCall(cast<Function>(GV), &Operands[1], - Operands.size()-1); - } - return 0; - case Instruction::GetElementPtr: { - Constant *Base = Operands[0]; - Operands.erase(Operands.begin()); - return ConstantExpr::getGetElementPtr(Base, Operands); - } - case Instruction::ICmp: - return ConstantExpr::getICmp( - cast<ICmpInst>(I)->getPredicate(), Operands[0], Operands[1]); - case Instruction::FCmp: - return ConstantExpr::getFCmp( - cast<FCmpInst>(I)->getPredicate(), Operands[0], Operands[1]); - } - return 0; -} - - /// getConstantEvolvingPHI - Given an LLVM value and a loop, return a PHI node /// in the loop that V is derived from. We allow arbitrary operations along the /// way, but the operands of an operation must either be constants or a value @@ -1841,7 +1806,7 @@ static Constant *EvaluateExpression(Value *V, Constant *PHIVal) { if (Operands[i] == 0) return 0; } - return ConstantFold(I, Operands); + return ConstantFoldInstOperands(I, &Operands[0], Operands.size()); } /// getConstantEvolutionLoopExitValue - If we know that the specified Phi is @@ -2006,7 +1971,8 @@ SCEVHandle ScalarEvolutionsImpl::getSCEVAtScope(SCEV *V, const Loop *L) { } } } - return SCEVUnknown::get(ConstantFold(I, Operands)); + Constant *C =ConstantFoldInstOperands(I, &Operands[0], Operands.size()); + return SCEVUnknown::get(C); } } |