[llvm] r227576 - [PM] Sink the population of the pass manager with target-specific
Chandler Carruth
chandlerc at gmail.com
Fri Jan 30 05:33:42 PST 2015
Author: chandlerc
Date: Fri Jan 30 07:33:42 2015
New Revision: 227576
URL: http://llvm.org/viewvc/llvm-project?rev=227576&view=rev
Log:
[PM] Sink the population of the pass manager with target-specific
analyses back into the LTO code generator.
The pass manager builder (and the transforms library in general)
shouldn't be referencing the target machine at all.
This makes the LTO population work like the others -- the data layout
and target transform info need to be pre-populated.
Modified:
llvm/trunk/include/llvm/Transforms/IPO/PassManagerBuilder.h
llvm/trunk/lib/LTO/LTOCodeGenerator.cpp
llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp
Modified: llvm/trunk/include/llvm/Transforms/IPO/PassManagerBuilder.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/IPO/PassManagerBuilder.h?rev=227576&r1=227575&r2=227576&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Transforms/IPO/PassManagerBuilder.h (original)
+++ llvm/trunk/include/llvm/Transforms/IPO/PassManagerBuilder.h Fri Jan 30 07:33:42 2015
@@ -151,7 +151,7 @@ public:
/// populateModulePassManager - This sets up the primary pass manager.
void populateModulePassManager(PassManagerBase &MPM);
- void populateLTOPassManager(PassManagerBase &PM, TargetMachine *TM = nullptr);
+ void populateLTOPassManager(PassManagerBase &PM);
};
/// Registers a function for adding a standard set of passes. This should be
Modified: llvm/trunk/lib/LTO/LTOCodeGenerator.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/LTO/LTOCodeGenerator.cpp?rev=227576&r1=227575&r2=227576&view=diff
==============================================================================
--- llvm/trunk/lib/LTO/LTOCodeGenerator.cpp (original)
+++ llvm/trunk/lib/LTO/LTOCodeGenerator.cpp Fri Jan 30 07:33:42 2015
@@ -488,6 +488,9 @@ bool LTOCodeGenerator::generateObjectFil
// Add an appropriate DataLayout instance for this module...
mergedModule->setDataLayout(TargetMach->getDataLayout());
+ passes.add(new DataLayoutPass());
+ TargetMach->addAnalysisPasses(passes);
+
Triple TargetTriple(TargetMach->getTargetTriple());
PassManagerBuilder PMB;
PMB.DisableGVNLoadPRE = DisableGVNLoadPRE;
@@ -501,7 +504,7 @@ bool LTOCodeGenerator::generateObjectFil
PMB.VerifyInput = true;
PMB.VerifyOutput = true;
- PMB.populateLTOPassManager(passes, TargetMach);
+ PMB.populateLTOPassManager(passes);
PassManager codeGenPasses;
Modified: llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp?rev=227576&r1=227575&r2=227576&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp (original)
+++ llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp Fri Jan 30 07:33:42 2015
@@ -478,13 +478,7 @@ void PassManagerBuilder::addLTOOptimizat
PM.add(createMergeFunctionsPass());
}
-void PassManagerBuilder::populateLTOPassManager(PassManagerBase &PM,
- TargetMachine *TM) {
- if (TM) {
- PM.add(new DataLayoutPass());
- TM->addAnalysisPasses(PM);
- }
-
+void PassManagerBuilder::populateLTOPassManager(PassManagerBase &PM) {
if (LibraryInfo)
PM.add(new TargetLibraryInfoWrapperPass(*LibraryInfo));
More information about the llvm-commits
mailing list