[polly] Properly create and initialize new PM analysis managers
authorArthur Eubanks <aeubanks@google.com>
Fri, 5 Nov 2021 16:31:14 +0000 (09:31 -0700)
committerArthur Eubanks <aeubanks@google.com>
Fri, 5 Nov 2021 16:32:54 +0000 (09:32 -0700)
If we don't properly initialize all the analysis managers, we may be
missing analyses that other analyses depend on.

Fixes broken polly test, e.g.
https://lab.llvm.org/buildbot/#/builders/10/builds/7501.

polly/lib/Transform/ScopInliner.cpp

index 5054b66..ed54731 100644 (file)
@@ -68,9 +68,17 @@ public:
     }
 
     PassBuilder PB;
+    // Populate analysis managers and register Polly-specific analyses.
+    LoopAnalysisManager LAM;
     FunctionAnalysisManager FAM;
+    CGSCCAnalysisManager CGAM;
+    ModuleAnalysisManager MAM;
     FAM.registerPass([] { return ScopAnalysis(); });
+    PB.registerModuleAnalyses(MAM);
+    PB.registerCGSCCAnalyses(CGAM);
     PB.registerFunctionAnalyses(FAM);
+    PB.registerLoopAnalyses(LAM);
+    PB.crossRegisterProxies(LAM, FAM, CGAM, MAM);
 
     RegionInfo &RI = FAM.getResult<RegionInfoAnalysis>(*F);
     ScopDetection &SD = FAM.getResult<ScopAnalysis>(*F);
@@ -84,9 +92,6 @@ public:
                         << " has scop as top level region");
       F->addFnAttr(llvm::Attribute::AlwaysInline);
 
-      ModuleAnalysisManager MAM;
-      PB.registerModuleAnalyses(MAM);
-      MAM.registerPass([&] { return FunctionAnalysisManagerModuleProxy(FAM); });
       ModulePassManager MPM;
       MPM.addPass(AlwaysInlinerPass());
       Module *M = F->getParent();