diff options
Diffstat (limited to 'polly/lib/Analysis/ScopBuilder.cpp')
| -rw-r--r-- | polly/lib/Analysis/ScopBuilder.cpp | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/polly/lib/Analysis/ScopBuilder.cpp b/polly/lib/Analysis/ScopBuilder.cpp index f33a28b2aa7..4ec4c9805ca 100644 --- a/polly/lib/Analysis/ScopBuilder.cpp +++ b/polly/lib/Analysis/ScopBuilder.cpp @@ -427,7 +427,7 @@ bool ScopBuilder::buildAccessMultiDimParam(MemAccInst Inst, ScopStmt *Stmt) { cast<SCEVConstant>(Sizes.back())->getAPInt().getSExtValue(); Sizes.pop_back(); if (ElementSize != DelinearizedSize) - scop->invalidate(DELINEARIZATION, Inst->getDebugLoc()); + scop->invalidate(DELINEARIZATION, Inst->getDebugLoc(), Inst->getParent()); addArrayAccess(Stmt, Inst, AccType, BasePointer->getValue(), ElementType, true, AccItr->second.DelinearizedSubscripts, Sizes, Val); @@ -935,7 +935,7 @@ static inline BasicBlock *getRegionNodeBasicBlock(RegionNode *RN) { } void ScopBuilder::buildScop(Region &R, AssumptionCache &AC) { - scop.reset(new Scop(R, SE, LI, *SD.getDetectionContext(&R))); + scop.reset(new Scop(R, SE, LI, *SD.getDetectionContext(&R), SD.ORE)); buildStmts(R); buildAccessFunctions(); @@ -1038,12 +1038,13 @@ ScopBuilder::ScopBuilder(Region *R, AssumptionCache &AC, AliasAnalysis &AA, ScopDetection &SD, ScalarEvolution &SE) : AA(AA), DL(DL), DT(DT), LI(LI), SD(SD), SE(SE) { - Function *F = R->getEntry()->getParent(); - DebugLoc Beg, End; - getDebugLocations(getBBPairForRegion(R), Beg, End); + auto P = getBBPairForRegion(R); + getDebugLocations(P, Beg, End); + std::string Msg = "SCoP begins here."; - emitOptimizationRemarkAnalysis(F->getContext(), DEBUG_TYPE, *F, Beg, Msg); + SD.ORE.emit(OptimizationRemarkAnalysis(DEBUG_TYPE, "ScopEntry", Beg, P.first) + << Msg); buildScop(*R, AC); @@ -1060,5 +1061,10 @@ ScopBuilder::ScopBuilder(Region *R, AssumptionCache &AC, AliasAnalysis &AA, ++RichScopFound; } - emitOptimizationRemarkAnalysis(F->getContext(), DEBUG_TYPE, *F, End, Msg); + if (R->isTopLevelRegion()) + SD.ORE.emit(OptimizationRemarkAnalysis(DEBUG_TYPE, "ScopEnd", End, P.first) + << Msg); + else + SD.ORE.emit(OptimizationRemarkAnalysis(DEBUG_TYPE, "ScopEnd", End, P.second) + << Msg); } |

