Handle inlining in populateLTOPassManager like in populateModulePassManager.
authorRafael Espindola <rafael.espindola@gmail.com>
Thu, 21 Aug 2014 13:35:30 +0000 (13:35 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Thu, 21 Aug 2014 13:35:30 +0000 (13:35 +0000)
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216178 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Transforms/IPO/PassManagerBuilder.h
lib/LTO/LTOCodeGenerator.cpp
lib/Transforms/IPO/PassManagerBuilder.cpp
tools/bugpoint/bugpoint.cpp
tools/opt/opt.cpp

index 7c54ad6f64aa7cdc50cb2597fc9be1a43110cdc1..56a8f76d63a417976fc327a2aac0348f1ea74387 100644 (file)
@@ -145,7 +145,7 @@ public:
 
   /// populateModulePassManager - This sets up the primary pass manager.
   void populateModulePassManager(PassManagerBase &MPM);
-  void populateLTOPassManager(PassManagerBase &PM, bool RunInliner);
+  void populateLTOPassManager(PassManagerBase &PM);
 };
 
 /// Registers a function for adding a standard set of passes.  This should be
index 2a195400e3be0439777b506c9a2417abcb4613ad..1fdc5cf04dd2e8cb4dbf2eaac2a1c71cba66d127 100644 (file)
@@ -477,7 +477,9 @@ bool LTOCodeGenerator::generateObjectFile(raw_ostream &out,
   if (!DisableOpt) {
     PassManagerBuilder PMB;
     PMB.DisableGVNLoadPRE = DisableGVNLoadPRE;
-    PMB.populateLTOPassManager(passes, !DisableInline);
+    if (!DisableInline)
+      PMB.Inliner = createFunctionInliningPass();
+    PMB.populateLTOPassManager(passes);
   }
 
   // Make sure everything is still good.
index 301279fdc8fc124de2777bbf820437a6bd240fd8..07f4688360008820e1a93cc2f13cc0c68aee1f00 100644 (file)
@@ -313,8 +313,7 @@ void PassManagerBuilder::populateModulePassManager(PassManagerBase &MPM) {
   addExtensionsToPM(EP_OptimizerLast, MPM);
 }
 
-void PassManagerBuilder::populateLTOPassManager(PassManagerBase &PM,
-                                                bool RunInliner) {
+void PassManagerBuilder::populateLTOPassManager(PassManagerBase &PM) {
   // Provide AliasAnalysis services for optimizations.
   addInitialAliasAnalysisPasses(PM);
 
@@ -341,8 +340,11 @@ void PassManagerBuilder::populateLTOPassManager(PassManagerBase &PM,
   addExtensionsToPM(EP_Peephole, PM);
 
   // Inline small functions
-  if (RunInliner)
-    PM.add(createFunctionInliningPass());
+  bool RunInliner = Inliner;
+  if (RunInliner) {
+    PM.add(Inliner);
+    Inliner = nullptr;
+  }
 
   PM.add(createPruneEHPass());   // Remove dead EH info.
 
@@ -483,5 +485,11 @@ void LLVMPassManagerBuilderPopulateLTOPassManager(LLVMPassManagerBuilderRef PMB,
                                                   LLVMBool RunInliner) {
   PassManagerBuilder *Builder = unwrap(PMB);
   PassManagerBase *LPM = unwrap(PM);
-  Builder->populateLTOPassManager(*LPM, RunInliner != 0);
+
+  // A small backwards compatibility hack. populateLTOPassManager used to take
+  // an RunInliner option.
+  if (RunInliner && !Builder->Inliner)
+    Builder->Inliner = createFunctionInliningPass();
+
+  Builder->populateLTOPassManager(*LPM);
 }
index 8a0d7aa4afbc61c99444bf39dc26b0e9e6e8db9d..a575861ede222f85a7871eee80de99eaffea2bdf 100644 (file)
@@ -179,7 +179,8 @@ int main(int argc, char **argv) {
 
   if (StandardLinkOpts) {
     PassManagerBuilder Builder;
-    Builder.populateLTOPassManager(PM, /*RunInliner=*/true);
+    Builder.Inliner = createFunctionInliningPass();
+    Builder.populateLTOPassManager(PM);
   }
 
   if (OptLevelO1 || OptLevelO2 || OptLevelO3) {
index 538c18cc488fa16e85188c2cfd2a62d9e11e01ca..7655ec7036de4b36439b09586b8bf81ac639e980 100644 (file)
@@ -267,7 +267,9 @@ static void AddStandardLinkPasses(PassManagerBase &PM) {
   if (DisableOptimizations) return;
 
   PassManagerBuilder Builder;
-  Builder.populateLTOPassManager(PM, /*RunInliner=*/!DisableInline);
+  if (!DisableInline)
+    Builder.Inliner = createFunctionInliningPass();
+  Builder.populateLTOPassManager(PM);
 }
 
 //===----------------------------------------------------------------------===//