[PATCH] D37571: [Polly][CodegenCleanup] Update cleanup passes according (old) PassManagerBuilder.

Michael Kruse via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 7 08:11:38 PDT 2017


Meinersbur created this revision.
Herald added a subscriber: Prazek.
Herald added a reviewer: dberlin.
Herald added a reviewer: bollu.

Update CodegenCleanup using the function-level passes added by populatePassManager that run between EP_EarlyAsPossible and EP_VectorizerStart in -O3.

The changes in particular are:

- Added pass create arguments, e.g. ExpensiveCombines for InstCombine.
- Remove reroll pass. The option -reroll-loops is disabled by default.
- Add passes run with UnitAtATime, which is the default.
- Add instances of LibCallsShrinkWrap, TailCallElimination, SCCP (sparse conditional constant propagation), Float2Int that did not run before.
- Add instances of GVN as in the default pipeline.

Notes:

- GVNHoist, GVNSink, NewGVN are still disabled in the -O3 pipeline.
- The optimization level and other optimization parameters are not accessible outside of PassManagerBuilder, hence we cannot add passes depending on these.


https://reviews.llvm.org/D37571

Files:
  lib/CodeGen/CodegenCleanup.cpp


Index: lib/CodeGen/CodegenCleanup.cpp
===================================================================
--- lib/CodeGen/CodegenCleanup.cpp
+++ lib/CodeGen/CodegenCleanup.cpp
@@ -62,36 +62,46 @@
     FPM->add(createCFGSimplificationPass());
     FPM->add(createSROAPass());
     FPM->add(createEarlyCSEPass());
+
+    FPM->add(createPromoteMemoryToRegisterPass());
     FPM->add(createInstructionCombiningPass());
+    FPM->add(createCFGSimplificationPass());
+    FPM->add(createSROAPass());
+    FPM->add(createEarlyCSEPass(true));
+    FPM->add(createSpeculativeExecutionIfHasBranchDivergencePass());
     FPM->add(createJumpThreadingPass());
     FPM->add(createCorrelatedValuePropagationPass());
     FPM->add(createCFGSimplificationPass());
-    FPM->add(createInstructionCombiningPass());
+    FPM->add(createInstructionCombiningPass(true));
+    FPM->add(createLibCallsShrinkWrapPass());
+    FPM->add(createTailCallEliminationPass());
     FPM->add(createCFGSimplificationPass());
     FPM->add(createReassociatePass());
-    FPM->add(createLoopRotatePass());
+    FPM->add(createLoopRotatePass(-1));
     FPM->add(createGVNPass());
     FPM->add(createLICMPass());
     FPM->add(createLoopUnswitchPass());
     FPM->add(createCFGSimplificationPass());
-    FPM->add(createInstructionCombiningPass());
+    FPM->add(createInstructionCombiningPass(true));
     FPM->add(createIndVarSimplifyPass());
     FPM->add(createLoopIdiomPass());
     FPM->add(createLoopDeletionPass());
     FPM->add(createCFGSimplificationPass());
-    FPM->add(createSimpleLoopUnrollPass());
+    FPM->add(createSimpleLoopUnrollPass(3));
     FPM->add(createMergedLoadStoreMotionPass());
+    FPM->add(createGVNPass());
     FPM->add(createMemCpyOptPass());
+    FPM->add(createSCCPPass());
     FPM->add(createBitTrackingDCEPass());
-    FPM->add(createInstructionCombiningPass());
+    FPM->add(createInstructionCombiningPass(true));
     FPM->add(createJumpThreadingPass());
     FPM->add(createCorrelatedValuePropagationPass());
     FPM->add(createDeadStoreEliminationPass());
     FPM->add(createLICMPass());
-    FPM->add(createLoopRerollPass());
     FPM->add(createAggressiveDCEPass());
     FPM->add(createCFGSimplificationPass());
-    FPM->add(createInstructionCombiningPass());
+    FPM->add(createInstructionCombiningPass(true));
+    FPM->add(createFloat2IntPass());
 
     return FPM->doInitialization();
   }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D37571.114178.patch
Type: text/x-patch
Size: 2412 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170907/987a5565/attachment.bin>


More information about the llvm-commits mailing list