From 0e4cf89f1ade7c6cab22384bca4568839fdc8866 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Sun, 22 Jun 2008 19:09:18 +0000 Subject: Move a few more SCEVExpander methods out-of-line. llvm-svn: 52612 --- llvm/lib/Analysis/ScalarEvolutionExpander.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'llvm/lib/Analysis/ScalarEvolutionExpander.cpp') diff --git a/llvm/lib/Analysis/ScalarEvolutionExpander.cpp b/llvm/lib/Analysis/ScalarEvolutionExpander.cpp index e32b21e623c..07850f77a14 100644 --- a/llvm/lib/Analysis/ScalarEvolutionExpander.cpp +++ b/llvm/lib/Analysis/ScalarEvolutionExpander.cpp @@ -226,6 +226,21 @@ Value *SCEVExpander::visitAddRecExpr(SCEVAddRecExpr *S) { return expand(V); } +Value *SCEVExpander::visitTruncateExpr(SCEVTruncateExpr *S) { + Value *V = expand(S->getOperand()); + return CastInst::createTruncOrBitCast(V, S->getType(), "tmp.", InsertPt); +} + +Value *SCEVExpander::visitZeroExtendExpr(SCEVZeroExtendExpr *S) { + Value *V = expand(S->getOperand()); + return CastInst::createZExtOrBitCast(V, S->getType(), "tmp.", InsertPt); +} + +Value *SCEVExpander::visitSignExtendExpr(SCEVSignExtendExpr *S) { + Value *V = expand(S->getOperand()); + return CastInst::createSExtOrBitCast(V, S->getType(), "tmp.", InsertPt); +} + Value *SCEVExpander::visitSMaxExpr(SCEVSMaxExpr *S) { Value *LHS = expand(S->getOperand(0)); for (unsigned i = 1; i < S->getNumOperands(); ++i) { @@ -246,6 +261,12 @@ Value *SCEVExpander::visitUMaxExpr(SCEVUMaxExpr *S) { return LHS; } +Value *SCEVExpander::expandCodeFor(SCEVHandle SH, Instruction *IP) { + // Expand the code for this SCEV. + this->InsertPt = IP; + return expand(SH); +} + Value *SCEVExpander::expand(SCEV *S) { // Check to see if we already expanded this. std::map::iterator I = InsertedExpressions.find(S); -- cgit v1.2.3