Respect LibraryInfo in populateLTOPassManager and use it. NFC.
authorRafael Espindola <rafael.espindola@gmail.com>
Thu, 21 Aug 2014 18:49:52 +0000 (18:49 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Thu, 21 Aug 2014 18:49:52 +0000 (18:49 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216203 91177308-0d34-0410-b5e6-96231b3b80d8

lib/LTO/LTOCodeGenerator.cpp
lib/Transforms/IPO/PassManagerBuilder.cpp

index 1fdc5cf04dd2e8cb4dbf2eaac2a1c71cba66d127..80aa48e0fbc29067f939b2e5bf10538163e2fbce 100644 (file)
@@ -466,11 +466,9 @@ bool LTOCodeGenerator::generateObjectFile(raw_ostream &out,
   mergedModule->setDataLayout(TargetMach->getSubtargetImpl()->getDataLayout());
   passes.add(new DataLayoutPass(mergedModule));
 
-  // Add appropriate TargetLibraryInfo for this module.
-  passes.add(new TargetLibraryInfo(Triple(TargetMach->getTargetTriple())));
-
   TargetMach->addAnalysisPasses(passes);
 
+  Triple TargetTriple(TargetMach->getTargetTriple());
   // Enabling internalize here would use its AllButMain variant. It
   // keeps only main if it exists and does nothing for libraries. Instead
   // we create the pass ourselves with the symbol list provided by the linker.
@@ -479,6 +477,7 @@ bool LTOCodeGenerator::generateObjectFile(raw_ostream &out,
     PMB.DisableGVNLoadPRE = DisableGVNLoadPRE;
     if (!DisableInline)
       PMB.Inliner = createFunctionInliningPass();
+    PMB.LibraryInfo = new TargetLibraryInfo(TargetTriple);
     PMB.populateLTOPassManager(passes);
   }
 
index 07f4688360008820e1a93cc2f13cc0c68aee1f00..b76f3486e5fbbc960caf598216f973d0f042dd5a 100644 (file)
@@ -314,6 +314,10 @@ void PassManagerBuilder::populateModulePassManager(PassManagerBase &MPM) {
 }
 
 void PassManagerBuilder::populateLTOPassManager(PassManagerBase &PM) {
+  // Add LibraryInfo if we have some.
+  if (LibraryInfo)
+    PM.add(new TargetLibraryInfo(*LibraryInfo));
+
   // Provide AliasAnalysis services for optimizations.
   addInitialAliasAnalysisPasses(PM);