[NPM][LTO] Do not enable MemorySSA with LoopFullUnrollPass
authorDavid Green <david.green@arm.com>
Fri, 19 Feb 2021 08:35:11 +0000 (08:35 +0000)
committerDavid Green <david.green@arm.com>
Fri, 19 Feb 2021 08:35:11 +0000 (08:35 +0000)
As with the standard opt pipeline, we disable the MemorySSA dependency
in the LTO LPM pipeline as not all passes preserve MemorySSA.

llvm/lib/Passes/PassBuilder.cpp

index 1581af9..236d54b 100644 (file)
@@ -1764,8 +1764,10 @@ PassBuilder::buildLTODefaultPipeline(OptimizationLevel Level,
   LPM.addPass(LoopFullUnrollPass(Level.getSpeedupLevel(),
                                  /* OnlyWhenForced= */ !PTO.LoopUnrolling,
                                  PTO.ForgetAllSCEVInLoopUnroll));
+  // The loop passes in LPM (LoopFullUnrollPass) do not preserve MemorySSA.
+  // *All* loop passes must preserve it, in order to be able to use it.
   MainFPM.addPass(createFunctionToLoopPassAdaptor(
-      std::move(LPM), EnableMSSALoopDependency, /*UseBlockFrequencyInfo=*/true,
+      std::move(LPM), /*UseMemorySSA=*/false, /*UseBlockFrequencyInfo=*/true,
       DebugLogging));
 
   MainFPM.addPass(LoopDistributePass());