Index: include/polly/ScopInfo.h =================================================================== --- include/polly/ScopInfo.h +++ include/polly/ScopInfo.h @@ -3029,7 +3029,9 @@ class ScopInfo { public: - using RegionToScopMapTy = DenseMap>; + using RegionToScopMapTy = MapVector>; + using reverse_iterator = RegionToScopMapTy::reverse_iterator; + using const_reverse_iterator = RegionToScopMapTy::const_reverse_iterator; using iterator = RegionToScopMapTy::iterator; using const_iterator = RegionToScopMapTy::const_iterator; @@ -3060,6 +3062,10 @@ iterator end() { return RegionToScopMap.end(); } const_iterator begin() const { return RegionToScopMap.begin(); } const_iterator end() const { return RegionToScopMap.end(); } + reverse_iterator rbegin() { return RegionToScopMap.rbegin(); } + reverse_iterator rend() { return RegionToScopMap.rend(); } + const_reverse_iterator rbegin() const { return RegionToScopMap.rbegin(); } + const_reverse_iterator rend() const { return RegionToScopMap.rend(); } bool empty() const { return RegionToScopMap.empty(); } }; Index: lib/Analysis/ScopDetection.cpp =================================================================== --- lib/Analysis/ScopDetection.cpp +++ lib/Analysis/ScopDetection.cpp @@ -1804,6 +1804,7 @@ PreservedAnalyses ScopAnalysisPrinterPass::run(Function &F, FunctionAnalysisManager &FAM) { + Stream << "Detected Scops in Function " << F.getName() << "\n"; auto &SD = FAM.getResult(F); for (const Region *R : SD.ValidRegions) Stream << "Valid Region for Scop: " << R->getNameStr() << '\n'; Index: lib/Analysis/ScopInfo.cpp =================================================================== --- lib/Analysis/ScopInfo.cpp +++ lib/Analysis/ScopInfo.cpp @@ -5290,7 +5290,7 @@ PreservedAnalyses ScopInfoPrinterPass::run(Function &F, FunctionAnalysisManager &FAM) { auto &SI = FAM.getResult(F); - for (auto &It : SI) { + for (auto &It : reverse(SI)) { if (It.second) It.second->print(Stream, PollyPrintInstructions); else