From: Roman Gareev Date: Sun, 21 Aug 2016 11:09:19 +0000 (+0000) Subject: Simplify AccFuncMap to vector<> AccessFunctions X-Git-Tag: llvmorg-4.0.0-rc1~11803 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e2ee79afde0ba45e427b8c7781e944af80cbbe2d;p=platform%2Fupstream%2Fllvm.git 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> AccessFunctions. Reviewed-by: Tobias Grosser Differential Revision: https://reviews.llvm.org/D23759 llvm-svn: 279394 --- diff --git a/polly/include/polly/ScopInfo.h b/polly/include/polly/ScopInfo.h index e84f6ebe..fa115a8 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 LoopBoundMapType; -typedef std::deque AccFuncSetType; -typedef std::map AccFuncMapType; +typedef std::vector> 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 a14033e..13695d0 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 49accbf..1d06694 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() {