Moving ManagedMemoryRewritePass when hybrid option is selected
authorMichael Kruse <llvm@meinersbur.de>
Mon, 25 Mar 2019 23:26:59 +0000 (23:26 +0000)
committerMichael Kruse <llvm@meinersbur.de>
Mon, 25 Mar 2019 23:26:59 +0000 (23:26 +0000)
Compiling with -polly-target=hybrid was causing Polly to occur two times
in the pipeline. The reason was how the ManagedMemoryRewritePass was
registered in the pass manager. ManagedMemoryRewritePass being a
ModulePass was forcing all previous passes to get recomputed. This
commit avoids Polly to appear two times in the pipeline registering the
ManagedMemoryRewritePass later in the pass manager.

Patch by Lorenzo Chelini <l.chelini@icloud.com>

Differential Revision: https://reviews.llvm.org/D59263

llvm-svn: 356965

polly/lib/Support/RegisterPasses.cpp

index e0e02d1afe3e9258ef0b1a4bfccce085a6d3b8b4..676756d24906bbc099b87ddb6fe9b63c9d1bf742 100644 (file)
@@ -349,12 +349,9 @@ void registerPollyPasses(llvm::legacy::PassManagerBase &PM) {
     PM.add(polly::createPruneUnprofitablePass());
 
 #ifdef GPU_CODEGEN
-  if (Target == TARGET_HYBRID) {
+  if (Target == TARGET_HYBRID)
     PM.add(
         polly::createPPCGCodeGenerationPass(GPUArchChoice, GPURuntimeChoice));
-    PM.add(polly::createManagedMemoryRewritePassPass(GPUArchChoice,
-                                                     GPURuntimeChoice));
-  }
 #endif
   if (Target == TARGET_CPU || Target == TARGET_HYBRID)
     switch (Optimizer) {
@@ -388,6 +385,12 @@ void registerPollyPasses(llvm::legacy::PassManagerBase &PM) {
   }
 #endif
 
+#ifdef GPU_CODEGEN
+  if (Target == TARGET_HYBRID)
+    PM.add(polly::createManagedMemoryRewritePassPass(GPUArchChoice,
+                                                     GPURuntimeChoice));
+#endif
+
   // FIXME: This dummy ModulePass keeps some programs from miscompiling,
   // probably some not correctly preserved analyses. It acts as a barrier to
   // force all analysis results to be recomputed.