summaryrefslogtreecommitdiffstats
path: root/polly/lib/Analysis/DependenceInfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'polly/lib/Analysis/DependenceInfo.cpp')
-rw-r--r--polly/lib/Analysis/DependenceInfo.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/polly/lib/Analysis/DependenceInfo.cpp b/polly/lib/Analysis/DependenceInfo.cpp
index 079fc2733b3..e7a3dfcc630 100644
--- a/polly/lib/Analysis/DependenceInfo.cpp
+++ b/polly/lib/Analysis/DependenceInfo.cpp
@@ -912,6 +912,48 @@ void Dependences::setReductionDependences(MemoryAccess *MA, isl_map *D) {
}
const Dependences &
+DependenceAnalysis::Result::getDependences(Dependences::AnalysisLevel Level) {
+ if (Dependences *d = D[Level].get())
+ return *d;
+
+ return recomputeDependences(Level);
+}
+
+const Dependences &DependenceAnalysis::Result::recomputeDependences(
+ Dependences::AnalysisLevel Level) {
+ D[Level].reset(new Dependences(S.getSharedIslCtx(), Level));
+ D[Level]->calculateDependences(S);
+ return *D[Level];
+}
+
+DependenceAnalysis::Result
+DependenceAnalysis::run(Scop &S, ScopAnalysisManager &SAM,
+ ScopStandardAnalysisResults &SAR) {
+ return {S, {}};
+}
+
+AnalysisKey DependenceAnalysis::Key;
+
+PreservedAnalyses
+DependenceInfoPrinterPass::run(Scop &S, ScopAnalysisManager &SAM,
+ ScopStandardAnalysisResults &SAR,
+ SPMUpdater &U) {
+ auto &DI = SAM.getResult<DependenceAnalysis>(S, SAR);
+
+ if (auto d = DI.D[OptAnalysisLevel].get()) {
+ d->print(OS);
+ return PreservedAnalyses::all();
+ }
+
+ // Otherwise create the dependences on-the-fly and print it
+ Dependences D(S.getSharedIslCtx(), OptAnalysisLevel);
+ D.calculateDependences(S);
+ D.print(OS);
+
+ return PreservedAnalyses::all();
+}
+
+const Dependences &
DependenceInfo::getDependences(Dependences::AnalysisLevel Level) {
if (Dependences *d = D[Level].get())
return *d;
OpenPOWER on IntegriCloud