diff options
| author | Tobias Grosser <tobias@grosser.es> | 2014-03-19 17:54:23 +0000 |
|---|---|---|
| committer | Tobias Grosser <tobias@grosser.es> | 2014-03-19 17:54:23 +0000 |
| commit | 806e9fff601d8c96de190ce5567cafe9abea51ab (patch) | |
| tree | 4769361de89e60eac017509e59419bf1850caa5c /polly/lib/Polly.cpp | |
| parent | 3a520a9373144396b81c794bb5e26130986bd36f (diff) | |
| download | bcm5719-llvm-806e9fff601d8c96de190ce5567cafe9abea51ab.tar.gz bcm5719-llvm-806e9fff601d8c96de190ce5567cafe9abea51ab.zip | |
Move Pass registration into polly library
This ensures that the polly passes get properly registered both, when using
polly as a loadable module and when directly linking it into clang/opt/bugpoint.
llvm-svn: 204255
Diffstat (limited to 'polly/lib/Polly.cpp')
| -rw-r--r-- | polly/lib/Polly.cpp | 41 |
1 files changed, 0 insertions, 41 deletions
diff --git a/polly/lib/Polly.cpp b/polly/lib/Polly.cpp index 5aba051bfbf..c879fd991a1 100644 --- a/polly/lib/Polly.cpp +++ b/polly/lib/Polly.cpp @@ -27,45 +27,4 @@ public: } }; static StaticInitializer InitializeEverything; - -static void -registerPollyEarlyAsPossiblePasses(const llvm::PassManagerBuilder &Builder, - llvm::PassManagerBase &PM) { - - if (!polly::shouldEnablePolly()) - return; - - polly::registerPollyPasses(PM); -} - -/// @brief Register Polly to be available as an optimizer -/// -/// We currently register Polly such that it runs as early as possible. This has -/// several implications: -/// -/// 1) We need to schedule more canonicalization passes -/// -/// As nothing is run before Polly, it is necessary to run a set of preparing -/// transformations before Polly to canonicalize the LLVM-IR and to allow -/// Polly to detect and understand the code. -/// -/// 2) LICM and LoopIdiom pass have not yet been run -/// -/// Loop invariant code motion as well as the loop idiom recognition pass make -/// it more difficult for Polly to transform code. LICM may introduce -/// additional data dependences that are hard to eliminate and the loop idiom -/// recognition pass may introduce calls to memset that we currently do not -/// understand. By running Polly early enough (meaning before these passes) we -/// avoid difficulties that may be introduced by these passes. -/// -/// 3) We get the full -O3 optimization sequence after Polly -/// -/// The LLVM-IR that is generated by Polly has been optimized on a high level, -/// but it may be rather inefficient on the lower/scalar level. By scheduling -/// Polly before all other passes, we have the full sequence of -O3 -/// optimizations behind us, such that inefficiencies on the low level can -/// be optimized away. -static llvm::RegisterStandardPasses -RegisterPollyOptimizer(llvm::PassManagerBuilder::EP_EarlyAsPossible, - registerPollyEarlyAsPossiblePasses); } // end of anonymous namespace. |

