diff --git a/polly/include/polly/ScopDetection.h b/polly/include/polly/ScopDetection.h --- a/polly/include/polly/ScopDetection.h +++ b/polly/include/polly/ScopDetection.h @@ -185,6 +185,9 @@ int MaxDepth; }; + int NextScopID = 0; + int getNextID() { return NextScopID++; } + private: //===--------------------------------------------------------------------===// diff --git a/polly/include/polly/ScopInfo.h b/polly/include/polly/ScopInfo.h --- a/polly/include/polly/ScopInfo.h +++ b/polly/include/polly/ScopInfo.h @@ -1709,12 +1709,6 @@ /// The name of the SCoP (identical to the regions name) Optional name; - /// The ID to be assigned to the next Scop in a function - static int NextScopID; - - /// The name of the function currently under consideration - static std::string CurrentFunc; - // Access functions of the SCoP. // // This owns all the MemoryAccess objects of the Scop created in this pass. @@ -1899,12 +1893,10 @@ DenseMap> PHIIncomingAccs; - /// Return the ID for a new Scop within a function - static int getNextID(std::string ParentFunc); - /// Scop constructor; invoked from ScopBuilder::buildScop. Scop(Region &R, ScalarEvolution &SE, LoopInfo &LI, DominatorTree &DT, - ScopDetection::DetectionContext &DC, OptimizationRemarkEmitter &ORE); + ScopDetection::DetectionContext &DC, OptimizationRemarkEmitter &ORE, + int ID); //@} diff --git a/polly/lib/Analysis/ScopBuilder.cpp b/polly/lib/Analysis/ScopBuilder.cpp --- a/polly/lib/Analysis/ScopBuilder.cpp +++ b/polly/lib/Analysis/ScopBuilder.cpp @@ -3631,7 +3631,8 @@ #endif void ScopBuilder::buildScop(Region &R, AssumptionCache &AC) { - scop.reset(new Scop(R, SE, LI, DT, *SD.getDetectionContext(&R), ORE)); + scop.reset(new Scop(R, SE, LI, DT, *SD.getDetectionContext(&R), ORE, + SD.getNextID())); buildStmts(R); diff --git a/polly/lib/Analysis/ScopInfo.cpp b/polly/lib/Analysis/ScopInfo.cpp --- a/polly/lib/Analysis/ScopInfo.cpp +++ b/polly/lib/Analysis/ScopInfo.cpp @@ -1692,25 +1692,12 @@ return getDomainConditions(BBR->getEntry()); } -int Scop::NextScopID = 0; - -std::string Scop::CurrentFunc; - -int Scop::getNextID(std::string ParentFunc) { - if (ParentFunc != CurrentFunc) { - CurrentFunc = ParentFunc; - NextScopID = 0; - } - return NextScopID++; -} - Scop::Scop(Region &R, ScalarEvolution &ScalarEvolution, LoopInfo &LI, DominatorTree &DT, ScopDetection::DetectionContext &DC, - OptimizationRemarkEmitter &ORE) + OptimizationRemarkEmitter &ORE, int ID) : IslCtx(isl_ctx_alloc(), isl_ctx_free), SE(&ScalarEvolution), DT(&DT), R(R), name(None), HasSingleExitEdge(R.getExitingBlock()), DC(DC), - ORE(ORE), Affinator(this, LI), - ID(getNextID((*R.getEntry()->getParent()).getName().str())) { + ORE(ORE), Affinator(this, LI), ID(ID) { if (IslOnErrorAbort) isl_options_set_on_error(getIslCtx().get(), ISL_ON_ERROR_ABORT); buildContext();