diff options
Diffstat (limited to 'llvm/lib/Transforms/IPO/PassManagerBuilder.cpp')
-rw-r--r-- | llvm/lib/Transforms/IPO/PassManagerBuilder.cpp | 44 |
1 files changed, 1 insertions, 43 deletions
diff --git a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp index 5bb82ef8b9c..46a0d1d15a4 100644 --- a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp +++ b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp @@ -140,8 +140,6 @@ PassManagerBuilder::PassManagerBuilder() { PrepareForLTO = false; PGOInstrGen = RunPGOInstrGen; PGOInstrUse = RunPGOInstrUse; - PrepareForThinLTO = false; - PerformThinLTO = false; } PassManagerBuilder::~PassManagerBuilder() { @@ -235,11 +233,6 @@ void PassManagerBuilder::addFunctionSimplificationPasses( MPM.add(createTailCallEliminationPass()); // Eliminate tail calls MPM.add(createCFGSimplificationPass()); // Merge & remove BBs MPM.add(createReassociatePass()); // Reassociate expressions - if (PrepareForThinLTO) { - MPM.add(createAggressiveDCEPass()); // Delete dead instructions - MPM.add(createInstructionCombiningPass()); // Combine silly seq's - return; - } // Rotate Loop - disable header duplication at -Oz MPM.add(createLoopRotatePass(SizeLevel == 2 ? 0 : -1)); MPM.add(createLICMPass()); // Hoist loop invariants @@ -353,12 +346,6 @@ void PassManagerBuilder::populateModulePassManager( MPM.add(createIPSCCPPass()); // IP SCCP MPM.add(createGlobalOptimizerPass()); // Optimize out global vars - - if (PerformThinLTO) - // Linking modules together can lead to duplicated global constants, only - // keep one copy of each constant. - MPM.add(createConstantMergePass()); - // Promote any localized global vars MPM.add(createPromoteMemoryToRegisterPass()); @@ -391,12 +378,6 @@ void PassManagerBuilder::populateModulePassManager( addFunctionSimplificationPasses(MPM); - // If we are planning to perform ThinLTO later, let's not bloat the code with - // unrolling/vectorization/... now. We'll first run the inliner + CGSCC passes - // during ThinLTO and performs the rest of the optimizations afterward. - if (PrepareForThinLTO) - return; - // FIXME: This is a HACK! The inliner pass above implicitly creates a CGSCC // pass manager that we are specifically trying to avoid. To prevent this // we must insert a no-op module pass to reset the pass manager. @@ -415,7 +396,7 @@ void PassManagerBuilder::populateModulePassManager( if (!DisableUnitAtATime) MPM.add(createReversePostOrderFunctionAttrsPass()); - if (!DisableUnitAtATime && OptLevel > 1 && !PrepareForLTO) + if (!DisableUnitAtATime && OptLevel > 1 && !PrepareForLTO) { // Remove avail extern fns and globals definitions if we aren't // compiling an object file for later LTO. For LTO we want to preserve // these so they are eligible for inlining at link-time. Note if they @@ -426,15 +407,6 @@ void PassManagerBuilder::populateModulePassManager( // globals referenced by available external functions dead // and saves running remaining passes on the eliminated functions. MPM.add(createEliminateAvailableExternallyPass()); - - if (PerformThinLTO) { - // Remove dead fns and globals. Removing unreferenced functions could lead - // to more opportunities for globalopt - MPM.add(createGlobalDCEPass()); - MPM.add(createGlobalOptimizerPass()); - // Remove dead fns and globals after globalopt - MPM.add(createGlobalDCEPass()); - addFunctionSimplificationPasses(MPM); } if (EnableNonLTOGlobalsModRef) @@ -710,20 +682,6 @@ void PassManagerBuilder::addLateLTOOptimizationPasses( PM.add(createMergeFunctionsPass()); } -void PassManagerBuilder::populateThinLTOPassManager( - legacy::PassManagerBase &PM) { - PerformThinLTO = true; - - if (VerifyInput) - PM.add(createVerifierPass()); - - populateModulePassManager(PM); - - if (VerifyOutput) - PM.add(createVerifierPass()); - PerformThinLTO = false; -} - void PassManagerBuilder::populateLTOPassManager(legacy::PassManagerBase &PM) { if (LibraryInfo) PM.add(new TargetLibraryInfoWrapperPass(*LibraryInfo)); |