summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoman Gareev <gareevroman@gmail.com>2016-08-21 11:09:19 +0000
committerRoman Gareev <gareevroman@gmail.com>2016-08-21 11:09:19 +0000
commite2ee79afde0ba45e427b8c7781e944af80cbbe2d (patch)
tree1fc78b9f06be594c526bb88d5622b50122051c38
parent9ae797a7984aad0e0b09f2b030e7786cf395ab58 (diff)
downloadbcm5719-llvm-e2ee79afde0ba45e427b8c7781e944af80cbbe2d.tar.gz
bcm5719-llvm-e2ee79afde0ba45e427b8c7781e944af80cbbe2d.zip
Simplify AccFuncMap to vector<> AccessFunctions
getAccessFunctions() is dead code and the 'BB' argument of getOrCreateAccessFunctions() is not used. This patch deletes getAccessFunctions and transforms AccFuncMap into a std::vector<std::unique_ptr<MemoryAccess>> AccessFunctions. Reviewed-by: Tobias Grosser <tobias@grosser.es> Differential Revision: https://reviews.llvm.org/D23759 llvm-svn: 279394
-rw-r--r--polly/include/polly/ScopInfo.h25
-rw-r--r--polly/lib/Analysis/ScopBuilder.cpp10
-rw-r--r--polly/lib/Analysis/ScopInfo.cpp2
3 files changed, 14 insertions, 23 deletions
diff --git a/polly/include/polly/ScopInfo.h b/polly/include/polly/ScopInfo.h
index e84f6ebe26e..fa115a86f36 100644
--- a/polly/include/polly/ScopInfo.h
+++ b/polly/include/polly/ScopInfo.h
@@ -91,8 +91,7 @@ enum AssumptionSign { AS_ASSUMPTION, AS_RESTRICTION };
/// through the loop.
typedef std::map<const Loop *, const SCEV *> LoopBoundMapType;
-typedef std::deque<MemoryAccess> AccFuncSetType;
-typedef std::map<const BasicBlock *, AccFuncSetType> AccFuncMapType;
+typedef std::vector<std::unique_ptr<MemoryAccess>> AccFuncVector;
/// @brief A class to store information about arrays in the SCoP.
///
@@ -1348,10 +1347,10 @@ private:
/// The underlying Region.
Region &R;
- // Access function of statements (currently BasicBlocks) .
+ // Access functions of the SCoP.
//
// This owns all the MemoryAccess objects of the Scop created in this pass.
- AccFuncMapType AccFuncMap;
+ AccFuncVector AccessFunctions;
/// Flag to indicate that the scheduler actually optimized the SCoP.
bool IsOptimized;
@@ -1532,9 +1531,10 @@ private:
Scop(Region &R, ScalarEvolution &SE, LoopInfo &LI,
ScopDetection::DetectionContext &DC);
- /// @brief Get or create the access function set in a BasicBlock
- AccFuncSetType &getOrCreateAccessFunctions(const BasicBlock *BB) {
- return AccFuncMap[BB];
+ /// @brief Add the access function to all MemoryAccess objects of the Scop
+ /// created in this pass.
+ void addAccessFunction(MemoryAccess *Access) {
+ AccessFunctions.emplace_back(Access);
}
//@}
@@ -1844,17 +1844,6 @@ private:
public:
~Scop();
- /// @brief Get all access functions in a BasicBlock
- ///
- /// @param BB The BasicBlock that containing the access functions.
- ///
- /// @return All access functions in BB
- ///
- AccFuncSetType *getAccessFunctions(const BasicBlock *BB) {
- AccFuncMapType::iterator at = AccFuncMap.find(BB);
- return at != AccFuncMap.end() ? &(at->second) : 0;
- }
-
ScalarEvolution *getSE() const;
/// @brief Get the count of parameters used in this Scop.
diff --git a/polly/lib/Analysis/ScopBuilder.cpp b/polly/lib/Analysis/ScopBuilder.cpp
index a14033ec442..13695d04a9a 100644
--- a/polly/lib/Analysis/ScopBuilder.cpp
+++ b/polly/lib/Analysis/ScopBuilder.cpp
@@ -481,7 +481,6 @@ MemoryAccess *ScopBuilder::addMemoryAccess(
if (!Stmt)
return nullptr;
- AccFuncSetType &AccList = scop->getOrCreateAccessFunctions(BB);
Value *BaseAddr = BaseAddress;
std::string BaseName = getIslCompatibleName("MemRef_", BaseAddr, "");
@@ -509,10 +508,13 @@ MemoryAccess *ScopBuilder::addMemoryAccess(
if (!isKnownMustAccess && AccType == MemoryAccess::MUST_WRITE)
AccType = MemoryAccess::MAY_WRITE;
- AccList.emplace_back(Stmt, Inst, AccType, BaseAddress, ElementType, Affine,
+ auto *Access =
+ new MemoryAccess(Stmt, Inst, AccType, BaseAddress, ElementType, Affine,
Subscripts, Sizes, AccessValue, Kind, BaseName);
- Stmt->addAccess(&AccList.back());
- return &AccList.back();
+
+ scop->addAccessFunction(Access);
+ Stmt->addAccess(Access);
+ return Access;
}
void ScopBuilder::addArrayAccess(
diff --git a/polly/lib/Analysis/ScopInfo.cpp b/polly/lib/Analysis/ScopInfo.cpp
index 49accbf79a7..1d06694d733 100644
--- a/polly/lib/Analysis/ScopInfo.cpp
+++ b/polly/lib/Analysis/ScopInfo.cpp
@@ -3144,7 +3144,7 @@ Scop::~Scop() {
ScopArrayInfoSet.clear();
ScopArrayInfoMap.clear();
ScopArrayNameMap.clear();
- AccFuncMap.clear();
+ AccessFunctions.clear();
}
void Scop::updateAccessDimensionality() {
OpenPOWER on IntegriCloud