diff options
| author | Bill Wendling <isanbard@gmail.com> | 2012-04-02 22:16:50 +0000 | 
|---|---|---|
| committer | Bill Wendling <isanbard@gmail.com> | 2012-04-02 22:16:50 +0000 | 
| commit | 932b992888e5cb602dd87c7650046adfe2343e01 (patch) | |
| tree | a3ece8cba9bfd1f28d04c973fa9bce7a4bbd05fa /llvm | |
| parent | 98f2c0c384e2aa39578cd8e9c96fe3c45e4b68d2 (diff) | |
| download | bcm5719-llvm-932b992888e5cb602dd87c7650046adfe2343e01.tar.gz bcm5719-llvm-932b992888e5cb602dd87c7650046adfe2343e01.zip  | |
Add an option to turn off the expensive GVN load PRE part of GVN.
llvm-svn: 153902
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h | 4 | ||||
| -rw-r--r-- | llvm/lib/Transforms/IPO/PassManagerBuilder.cpp | 9 | ||||
| -rw-r--r-- | llvm/tools/lto/LTOCodeGenerator.cpp | 6 | 
3 files changed, 13 insertions, 6 deletions
diff --git a/llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h b/llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h index 734f37e52eb..47ce90265bd 100644 --- a/llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h +++ b/llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h @@ -131,8 +131,9 @@ public:    /// populateModulePassManager - This sets up the primary pass manager.    void populateModulePassManager(PassManagerBase &MPM);    void populateLTOPassManager(PassManagerBase &PM, bool Internalize, -                              bool RunInliner); +                              bool RunInliner, bool DisableGVNLoadPRE = false);  }; +  /// Registers a function for adding a standard set of passes.  This should be  /// used by optimizer plugins to allow all front ends to transparently use  /// them.  Create a static instance of this class in your plugin, providing a @@ -143,5 +144,6 @@ struct RegisterStandardPasses {      PassManagerBuilder::addGlobalExtension(Ty, Fn);    }  }; +  } // end namespace llvm  #endif diff --git a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp index 243ba1a85bf..a1b0a4580bf 100644 --- a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp +++ b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp @@ -207,7 +207,8 @@ void PassManagerBuilder::populateModulePassManager(PassManagerBase &MPM) {  void PassManagerBuilder::populateLTOPassManager(PassManagerBase &PM,                                                  bool Internalize, -                                                bool RunInliner) { +                                                bool RunInliner, +                                                bool DisableGVNLoadPRE) {    // Provide AliasAnalysis services for optimizations.    addInitialAliasAnalysisPasses(PM); @@ -263,9 +264,9 @@ void PassManagerBuilder::populateLTOPassManager(PassManagerBase &PM,    PM.add(createFunctionAttrsPass()); // Add nocapture.    PM.add(createGlobalsModRefPass()); // IP alias analysis. -  PM.add(createLICMPass());      // Hoist loop invariants. -  PM.add(createGVNPass());       // Remove redundancies. -  PM.add(createMemCpyOptPass()); // Remove dead memcpys. +  PM.add(createLICMPass());                 // Hoist loop invariants. +  PM.add(createGVNPass(DisableGVNLoadPRE)); // Remove redundancies. +  PM.add(createMemCpyOptPass());            // Remove dead memcpys.    // Nuke dead stores.    PM.add(createDeadStoreEliminationPass()); diff --git a/llvm/tools/lto/LTOCodeGenerator.cpp b/llvm/tools/lto/LTOCodeGenerator.cpp index 1d2631e07d1..f0640c22063 100644 --- a/llvm/tools/lto/LTOCodeGenerator.cpp +++ b/llvm/tools/lto/LTOCodeGenerator.cpp @@ -49,6 +49,9 @@ using namespace llvm;  static cl::opt<bool> DisableInline("disable-inlining",    cl::desc("Do not run the inliner pass")); +static cl::opt<bool> DisableGVNLoadPRE("disable-gvn-loadpre", +  cl::desc("Do not run the GVN load PRE pass")); +  const char* LTOCodeGenerator::getVersionString() {  #ifdef LLVM_VERSION_INFO    return PACKAGE_NAME " version " PACKAGE_VERSION ", " LLVM_VERSION_INFO; @@ -353,7 +356,8 @@ bool LTOCodeGenerator::generateObjectFile(raw_ostream &out,    passes.add(new TargetData(*_target->getTargetData()));    PassManagerBuilder().populateLTOPassManager(passes, /*Internalize=*/ false, -                                              !DisableInline); +                                              !DisableInline, +                                              DisableGVNLoadPRE);    // Make sure everything is still good.    passes.add(createVerifierPass());  | 

