diff options
author | Dan Gohman <gohman@apple.com> | 2009-06-27 21:18:18 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2009-06-27 21:18:18 +0000 |
commit | 4dd6cced3f7e7639c97d3997d210cb7f5fec4d9d (patch) | |
tree | c1f45b21beafaa144f2496fdb8c5b398b5f881f3 /include | |
parent | 7a47df39d7205d9bd70ff7f764eecda7882d09a3 (diff) | |
download | external_llvm-4dd6cced3f7e7639c97d3997d210cb7f5fec4d9d.zip external_llvm-4dd6cced3f7e7639c97d3997d210cb7f5fec4d9d.tar.gz external_llvm-4dd6cced3f7e7639c97d3997d210cb7f5fec4d9d.tar.bz2 |
Change SCEVExpander to use an IRBuilder to emit instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74391 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/Analysis/ScalarEvolutionExpander.h | 32 |
1 files changed, 13 insertions, 19 deletions
diff --git a/include/llvm/Analysis/ScalarEvolutionExpander.h b/include/llvm/Analysis/ScalarEvolutionExpander.h index 90dba8b..60a23c5 100644 --- a/include/llvm/Analysis/ScalarEvolutionExpander.h +++ b/include/llvm/Analysis/ScalarEvolutionExpander.h @@ -14,10 +14,9 @@ #ifndef LLVM_ANALYSIS_SCALAREVOLUTION_EXPANDER_H #define LLVM_ANALYSIS_SCALAREVOLUTION_EXPANDER_H -#include "llvm/Instructions.h" -#include "llvm/Type.h" -#include "llvm/Analysis/ScalarEvolution.h" #include "llvm/Analysis/ScalarEvolutionExpressions.h" +#include "llvm/Support/IRBuilder.h" +#include "llvm/Support/TargetFolder.h" namespace llvm { /// SCEVExpander - This class uses information about analyze scalars to @@ -32,12 +31,13 @@ namespace llvm { InsertedExpressions; std::set<Value*> InsertedValues; - BasicBlock::iterator InsertPt; + typedef IRBuilder<true, TargetFolder> BuilderType; + BuilderType Builder; friend struct SCEVVisitor<SCEVExpander, Value*>; public: explicit SCEVExpander(ScalarEvolution &se) - : SE(se) {} + : SE(se), Builder(TargetFolder(se.TD)) {} /// clear - Erase the contents of the InsertedExpressions map so that users /// trying to expand the same expression into multiple BasicBlocks or @@ -53,27 +53,21 @@ namespace llvm { /// expandCodeFor - Insert code to directly compute the specified SCEV /// expression into the program. The inserted code is inserted into the /// specified block. - Value *expandCodeFor(const SCEV* SH, const Type *Ty, - BasicBlock::iterator IP) { - InsertPt = IP; + Value *expandCodeFor(const SCEV* SH, const Type *Ty, Instruction *IP) { + Builder.SetInsertPoint(IP->getParent(), IP); return expandCodeFor(SH, Ty); } - /// InsertCastOfTo - Insert a cast of V to the specified type, doing what - /// we can to share the casts. - Value *InsertCastOfTo(Instruction::CastOps opcode, Value *V, - const Type *Ty); + private: + /// InsertBinop - Insert the specified binary operator, doing a small amount + /// of work to avoid inserting an obviously redundant operation. + Value *InsertBinop(Instruction::BinaryOps Opcode, Value *LHS, Value *RHS); /// InsertNoopCastOfTo - Insert a cast of V to the specified type, - /// which must be possible with a noop cast. + /// which must be possible with a noop cast, doing what we can to + /// share the casts. Value *InsertNoopCastOfTo(Value *V, const Type *Ty); - /// InsertBinop - Insert the specified binary operator, doing a small amount - /// of work to avoid inserting an obviously redundant operation. - Value *InsertBinop(Instruction::BinaryOps Opcode, Value *LHS, - Value *RHS, BasicBlock::iterator InsertPt); - - private: /// expandAddToGEP - Expand a SCEVAddExpr with a pointer type into a GEP /// instead of using ptrtoint+arithmetic+inttoptr. Value *expandAddToGEP(const SCEV* const *op_begin, |