diff options
author | Tobias Grosser <tobias@grosser.es> | 2015-10-04 10:18:32 +0000 |
---|---|---|
committer | Tobias Grosser <tobias@grosser.es> | 2015-10-04 10:18:32 +0000 |
commit | f4bb7a6a4d05fecfc011007da1d3190251a2caa2 (patch) | |
tree | 67e87c10a942e1fadbec4d761cef929f39e1e4df | |
parent | bb01c6fda2d6e63e7d5b455a8a07b3c9dfaee5c3 (diff) | |
download | bcm5719-llvm-f4bb7a6a4d05fecfc011007da1d3190251a2caa2.tar.gz bcm5719-llvm-f4bb7a6a4d05fecfc011007da1d3190251a2caa2.zip |
Consolidate the different ValueMapTypes we are using
There have been various places where llvm::DenseMap<const llvm::Value *,
llvm::Value *> types have been defined, but all types have been expected to be
identical. We make this more clear by consolidating the different types and use
BlockGenerator::ValueMapT wherever there is a need for types to match
BlockGenerator::ValueMapT.
llvm-svn: 249264
-rw-r--r-- | polly/include/polly/CodeGen/BlockGenerators.h | 8 | ||||
-rw-r--r-- | polly/include/polly/CodeGen/IslExprBuilder.h | 3 | ||||
-rw-r--r-- | polly/include/polly/CodeGen/IslNodeBuilder.h | 2 | ||||
-rw-r--r-- | polly/include/polly/Support/ScopHelper.h | 11 | ||||
-rw-r--r-- | polly/lib/CodeGen/BlockGenerators.cpp | 4 | ||||
-rw-r--r-- | polly/lib/CodeGen/IslExprBuilder.cpp | 3 | ||||
-rw-r--r-- | polly/lib/CodeGen/IslNodeBuilder.cpp | 4 | ||||
-rw-r--r-- | polly/lib/Support/ScopHelper.cpp | 9 |
8 files changed, 25 insertions, 19 deletions
diff --git a/polly/include/polly/CodeGen/BlockGenerators.h b/polly/include/polly/CodeGen/BlockGenerators.h index 2134644d87b..85f864d1349 100644 --- a/polly/include/polly/CodeGen/BlockGenerators.h +++ b/polly/include/polly/CodeGen/BlockGenerators.h @@ -67,6 +67,9 @@ public: /// @see The ScalarMap and PHIOpMap member. using ScalarAllocaMapTy = DenseMap<AssertingVH<Value>, AssertingVH<Value>>; + typedef llvm::DenseMap<const llvm::Value *, llvm::Value *> ValueMapT; + typedef llvm::SmallVector<ValueMapT, 8> VectorValueMapT; + /// @brief Simple vector of instructions to store escape users. using EscapeUserVectorTy = SmallVector<Instruction *, 4>; @@ -98,8 +101,7 @@ public: BlockGenerator(PollyIRBuilder &Builder, LoopInfo &LI, ScalarEvolution &SE, DominatorTree &DT, ScalarAllocaMapTy &ScalarMap, ScalarAllocaMapTy &PHIOpMap, EscapeUsersAllocaMapTy &EscapeMap, - ValueToValueMap &GlobalMap, - IslExprBuilder *ExprBuilder = nullptr); + ValueMapT &GlobalMap, IslExprBuilder *ExprBuilder = nullptr); /// @brief Copy the basic block. /// @@ -310,7 +312,7 @@ protected: /// @brief A map from llvm::Values referenced in the old code to a new set of /// llvm::Values, which is used to replace these old values during /// code generation. - ValueToValueMap &GlobalMap; + ValueMapT &GlobalMap; /// @brief Split @p BB to create a new one we can use to clone @p BB in. BasicBlock *splitBB(BasicBlock *BB); diff --git a/polly/include/polly/CodeGen/IslExprBuilder.h b/polly/include/polly/CodeGen/IslExprBuilder.h index 8b8ca481896..a5325606617 100644 --- a/polly/include/polly/CodeGen/IslExprBuilder.h +++ b/polly/include/polly/CodeGen/IslExprBuilder.h @@ -12,6 +12,7 @@ #ifndef POLLY_ISL_EXPR_BUILDER_H #define POLLY_ISL_EXPR_BUILDER_H +#include "polly/CodeGen/BlockGenerators.h" #include "polly/CodeGen/IRBuilder.h" #include "llvm/ADT/MapVector.h" #include "isl/ast.h" @@ -81,7 +82,7 @@ class IslExprBuilder { public: /// @brief A map from isl_ids to llvm::Values. typedef llvm::MapVector<isl_id *, llvm::AssertingVH<llvm::Value>> IDToValueTy; - typedef llvm::DenseMap<const llvm::Value *, llvm::Value *> ValueToValueMap; + typedef BlockGenerator::ValueMapT ValueToValueMap; /// @brief Construct an IslExprBuilder. /// diff --git a/polly/include/polly/CodeGen/IslNodeBuilder.h b/polly/include/polly/CodeGen/IslNodeBuilder.h index ad508def63a..c6ee707046e 100644 --- a/polly/include/polly/CodeGen/IslNodeBuilder.h +++ b/polly/include/polly/CodeGen/IslNodeBuilder.h @@ -115,7 +115,7 @@ protected: /// /// When generating new code for a ScopStmt this map is used to map certain /// llvm::Values to new llvm::Values. - polly::ValueMapT ValueMap; + polly::BlockGenerator::ValueMapT ValueMap; /// @brief Materialize code for @p Id if it was not done before. void materializeValue(__isl_take isl_id *Id); diff --git a/polly/include/polly/Support/ScopHelper.h b/polly/include/polly/Support/ScopHelper.h index c1c2c43bfbd..95762fe6662 100644 --- a/polly/include/polly/Support/ScopHelper.h +++ b/polly/include/polly/Support/ScopHelper.h @@ -39,8 +39,6 @@ class ScalarEvolution; namespace polly { class Scop; -typedef llvm::DenseMap<const llvm::Value *, llvm::Value *> ValueMapT; -typedef llvm::SmallVector<ValueMapT, 8> VectorValueMapT; /// Temporary Hack for extended regiontree. /// @@ -102,10 +100,11 @@ void splitEntryBlockForAlloca(llvm::BasicBlock *EntryBlock, llvm::Pass *P); /// @param E The expression for which code is actually generated. /// @param Ty The type of the resulting code. /// @param IP The insertion point for the new code. -llvm::Value *expandCodeFor(Scop &S, llvm::ScalarEvolution &SE, - const llvm::DataLayout &DL, const char *Name, - const llvm::SCEV *E, llvm::Type *Ty, - llvm::Instruction *IP, ValueMapT *VMap = nullptr); +llvm::Value *expandCodeFor( + Scop &S, llvm::ScalarEvolution &SE, const llvm::DataLayout &DL, + const char *Name, const llvm::SCEV *E, llvm::Type *Ty, + llvm::Instruction *IP, + llvm::DenseMap<const llvm::Value *, llvm::Value *> *VMap = nullptr); /// @brief Check if the block is a error block. /// diff --git a/polly/lib/CodeGen/BlockGenerators.cpp b/polly/lib/CodeGen/BlockGenerators.cpp index c282fa5928e..d17d1666adf 100644 --- a/polly/lib/CodeGen/BlockGenerators.cpp +++ b/polly/lib/CodeGen/BlockGenerators.cpp @@ -93,7 +93,7 @@ BlockGenerator::BlockGenerator(PollyIRBuilder &B, LoopInfo &LI, ScalarAllocaMapTy &ScalarMap, ScalarAllocaMapTy &PHIOpMap, EscapeUsersAllocaMapTy &EscapeMap, - ValueToValueMap &GlobalMap, + ValueMapT &GlobalMap, IslExprBuilder *ExprBuilder) : Builder(B), LI(LI), SE(SE), ExprBuilder(ExprBuilder), DT(DT), EntryBB(nullptr), PHIOpMap(PHIOpMap), ScalarMap(ScalarMap), @@ -107,7 +107,7 @@ Value *BlockGenerator::trySynthesizeNewValue(ScopStmt &Stmt, const Value *Old, if (const SCEV *Scev = SE.getSCEVAtScope(const_cast<Value *>(Old), L)) { if (!isa<SCEVCouldNotCompute>(Scev)) { const SCEV *NewScev = apply(Scev, LTS, SE); - ValueToValueMap VTV; + llvm::ValueToValueMap VTV; VTV.insert(BBMap.begin(), BBMap.end()); VTV.insert(GlobalMap.begin(), GlobalMap.end()); diff --git a/polly/lib/CodeGen/IslExprBuilder.cpp b/polly/lib/CodeGen/IslExprBuilder.cpp index 01512867ebb..e3a329faf89 100644 --- a/polly/lib/CodeGen/IslExprBuilder.cpp +++ b/polly/lib/CodeGen/IslExprBuilder.cpp @@ -153,7 +153,8 @@ Value *IslExprBuilder::createAccessAddress(isl_ast_expr *Expr) { const SCEV *DimSCEV = SAI->getDimensionSize(u - 1); - DimSCEV = SCEVParameterRewriter::rewrite(DimSCEV, SE, GlobalMap); + llvm::ValueToValueMap Map(GlobalMap.begin(), GlobalMap.end()); + DimSCEV = SCEVParameterRewriter::rewrite(DimSCEV, SE, Map); Value *DimSize = expandCodeFor(S, SE, DL, "polly", DimSCEV, DimSCEV->getType(), Builder.GetInsertPoint()); diff --git a/polly/lib/CodeGen/IslNodeBuilder.cpp b/polly/lib/CodeGen/IslNodeBuilder.cpp index 23b95c5cdd7..a660328190e 100644 --- a/polly/lib/CodeGen/IslNodeBuilder.cpp +++ b/polly/lib/CodeGen/IslNodeBuilder.cpp @@ -175,7 +175,7 @@ struct SubtreeReferences { LoopInfo &LI; ScalarEvolution &SE; Region &R; - ValueMapT &GlobalMap; + polly::BlockGenerator::ValueMapT &GlobalMap; SetVector<Value *> &Values; SetVector<const SCEV *> &SCEVs; BlockGenerator &BlockGen; @@ -601,7 +601,7 @@ void IslNodeBuilder::createForParallel(__isl_take isl_ast_node *For) { Builder.SetInsertPoint(LoopBody); // Save the current values. - ValueMapT ValueMapCopy = ValueMap; + auto ValueMapCopy = ValueMap; IslExprBuilder::IDToValueTy IDToValueCopy = IDToValue; updateValues(NewValues); diff --git a/polly/lib/Support/ScopHelper.cpp b/polly/lib/Support/ScopHelper.cpp index 89c4fa33dca..cc41d4812f7 100644 --- a/polly/lib/Support/ScopHelper.cpp +++ b/polly/lib/Support/ScopHelper.cpp @@ -240,6 +240,8 @@ void polly::splitEntryBlockForAlloca(BasicBlock *EntryBlock, Pass *P) { struct ScopExpander : SCEVVisitor<ScopExpander, const SCEV *> { friend struct SCEVVisitor<ScopExpander, const SCEV *>; + typedef llvm::DenseMap<const llvm::Value *, llvm::Value *> ValueMapT; + explicit ScopExpander(const Region &R, ScalarEvolution &SE, const DataLayout &DL, const char *Name, ValueMapT *VMap) : Expander(SCEVExpander(SE, DL, Name)), SE(SE), Name(Name), R(R), @@ -340,9 +342,10 @@ private: ///} }; -Value *polly::expandCodeFor(Scop &S, ScalarEvolution &SE, const DataLayout &DL, - const char *Name, const SCEV *E, Type *Ty, - Instruction *IP, ValueMapT *VMap) { +Value * +polly::expandCodeFor(Scop &S, ScalarEvolution &SE, const DataLayout &DL, + const char *Name, const SCEV *E, Type *Ty, Instruction *IP, + llvm::DenseMap<const llvm::Value *, llvm::Value *> *VMap) { ScopExpander Expander(S.getRegion(), SE, DL, Name, VMap); return Expander.expandCodeFor(E, Ty, IP); } |