diff options
Diffstat (limited to 'polly/lib/Analysis/ScopDetection.cpp')
| -rw-r--r-- | polly/lib/Analysis/ScopDetection.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/polly/lib/Analysis/ScopDetection.cpp b/polly/lib/Analysis/ScopDetection.cpp index fedca6fd206..52f57d6ec2c 100644 --- a/polly/lib/Analysis/ScopDetection.cpp +++ b/polly/lib/Analysis/ScopDetection.cpp @@ -1350,9 +1350,6 @@ bool ScopDetection::isValidRegion(DetectionContext &Context) const { return invalid<ReportIrreducibleRegion>(Context, /*Assert=*/true, &CurRegion, DbgLoc); - if (!isProfitableRegion(Context)) - return false; - DEBUG(dbgs() << "OK\n"); return true; } @@ -1472,6 +1469,19 @@ bool ScopDetection::runOnFunction(llvm::Function &F) { findScops(*TopRegion); + // Prune non-profitable regions. + for (auto &DIt : DetectionContextMap) { + auto &DC = DIt.getSecond(); + if (DC.Log.hasErrors()) + continue; + if (!ValidRegions.count(&DC.CurRegion)) + continue; + if (isProfitableRegion(DC)) + continue; + + ValidRegions.remove(&DC.CurRegion); + } + // Only makes sense when we tracked errors. if (PollyTrackFailures) emitMissedRemarks(F); |

