mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 11:42:57 +01:00
[PM] Retire disable unit-at-a-time switch.
This is a vestige from the GCC-3 days, which disables IPO passes when set. I don't think anybody actually uses it as there are several IPO passes which still run with this flag set and nobody complained/noticed. This reduces the delta between current and new pass manager and allows us to easily review the difference when we decide to flip the switch (or audit which passes should run, FWIW). llvm-svn: 315043
This commit is contained in:
parent
67ac70f145
commit
ed9b92aa03
@ -151,7 +151,6 @@ PassManagerBuilder::PassManagerBuilder() {
|
||||
SizeLevel = 0;
|
||||
LibraryInfo = nullptr;
|
||||
Inliner = nullptr;
|
||||
DisableUnitAtATime = false;
|
||||
DisableUnrollLoops = false;
|
||||
SLPVectorize = RunSLPVectorization;
|
||||
LoopVectorize = RunLoopVectorization;
|
||||
@ -455,23 +454,21 @@ void PassManagerBuilder::populateModulePassManager(
|
||||
if (PrepareForThinLTOUsingPGOSampleProfile)
|
||||
DisableUnrollLoops = true;
|
||||
|
||||
if (!DisableUnitAtATime) {
|
||||
// Infer attributes about declarations if possible.
|
||||
MPM.add(createInferFunctionAttrsLegacyPass());
|
||||
// Infer attributes about declarations if possible.
|
||||
MPM.add(createInferFunctionAttrsLegacyPass());
|
||||
|
||||
addExtensionsToPM(EP_ModuleOptimizerEarly, MPM);
|
||||
addExtensionsToPM(EP_ModuleOptimizerEarly, MPM);
|
||||
|
||||
MPM.add(createIPSCCPPass()); // IP SCCP
|
||||
MPM.add(createGlobalOptimizerPass()); // Optimize out global vars
|
||||
// Promote any localized global vars.
|
||||
MPM.add(createPromoteMemoryToRegisterPass());
|
||||
MPM.add(createIPSCCPPass()); // IP SCCP
|
||||
MPM.add(createGlobalOptimizerPass()); // Optimize out global vars
|
||||
// Promote any localized global vars.
|
||||
MPM.add(createPromoteMemoryToRegisterPass());
|
||||
|
||||
MPM.add(createDeadArgEliminationPass()); // Dead argument elimination
|
||||
MPM.add(createDeadArgEliminationPass()); // Dead argument elimination
|
||||
|
||||
addInstructionCombiningPass(MPM); // Clean up after IPCP & DAE
|
||||
addExtensionsToPM(EP_Peephole, MPM);
|
||||
MPM.add(createCFGSimplificationPass()); // Clean up after IPCP & DAE
|
||||
}
|
||||
addInstructionCombiningPass(MPM); // Clean up after IPCP & DAE
|
||||
addExtensionsToPM(EP_Peephole, MPM);
|
||||
MPM.add(createCFGSimplificationPass()); // Clean up after IPCP & DAE
|
||||
|
||||
// For SamplePGO in ThinLTO compile phase, we do not want to do indirect
|
||||
// call promotion as it will change the CFG too much to make the 2nd
|
||||
@ -487,16 +484,15 @@ void PassManagerBuilder::populateModulePassManager(
|
||||
MPM.add(createGlobalsAAWrapperPass());
|
||||
|
||||
// Start of CallGraph SCC passes.
|
||||
if (!DisableUnitAtATime)
|
||||
MPM.add(createPruneEHPass()); // Remove dead EH info
|
||||
MPM.add(createPruneEHPass()); // Remove dead EH info
|
||||
bool RunInliner = false;
|
||||
if (Inliner) {
|
||||
MPM.add(Inliner);
|
||||
Inliner = nullptr;
|
||||
RunInliner = true;
|
||||
}
|
||||
if (!DisableUnitAtATime)
|
||||
MPM.add(createPostOrderFunctionAttrsLegacyPass());
|
||||
|
||||
MPM.add(createPostOrderFunctionAttrsLegacyPass());
|
||||
if (OptLevel > 2)
|
||||
MPM.add(createArgumentPromotionPass()); // Scalarize uninlined fn args
|
||||
|
||||
@ -511,8 +507,7 @@ void PassManagerBuilder::populateModulePassManager(
|
||||
if (RunPartialInlining)
|
||||
MPM.add(createPartialInliningPass());
|
||||
|
||||
if (!DisableUnitAtATime && OptLevel > 1 && !PrepareForLTO &&
|
||||
!PrepareForThinLTO)
|
||||
if (OptLevel > 1 && !PrepareForLTO && !PrepareForThinLTO)
|
||||
// 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
|
||||
@ -524,8 +519,7 @@ void PassManagerBuilder::populateModulePassManager(
|
||||
// and saves running remaining passes on the eliminated functions.
|
||||
MPM.add(createEliminateAvailableExternallyPass());
|
||||
|
||||
if (!DisableUnitAtATime)
|
||||
MPM.add(createReversePostOrderFunctionAttrsPass());
|
||||
MPM.add(createReversePostOrderFunctionAttrsPass());
|
||||
|
||||
// The inliner performs some kind of dead code elimination as it goes,
|
||||
// but there are cases that are not really caught by it. We might
|
||||
@ -650,16 +644,14 @@ void PassManagerBuilder::populateModulePassManager(
|
||||
// about pointer alignments.
|
||||
MPM.add(createAlignmentFromAssumptionsPass());
|
||||
|
||||
if (!DisableUnitAtATime) {
|
||||
// FIXME: We shouldn't bother with this anymore.
|
||||
MPM.add(createStripDeadPrototypesPass()); // Get rid of dead prototypes
|
||||
// FIXME: We shouldn't bother with this anymore.
|
||||
MPM.add(createStripDeadPrototypesPass()); // Get rid of dead prototypes
|
||||
|
||||
// GlobalOpt already deletes dead functions and globals, at -O2 try a
|
||||
// late pass of GlobalDCE. It is capable of deleting dead cycles.
|
||||
if (OptLevel > 1) {
|
||||
MPM.add(createGlobalDCEPass()); // Remove dead fns and globals.
|
||||
MPM.add(createConstantMergePass()); // Merge dup global constants
|
||||
}
|
||||
// GlobalOpt already deletes dead functions and globals, at -O2 try a
|
||||
// late pass of GlobalDCE. It is capable of deleting dead cycles.
|
||||
if (OptLevel > 1) {
|
||||
MPM.add(createGlobalDCEPass()); // Remove dead fns and globals.
|
||||
MPM.add(createConstantMergePass()); // Merge dup global constants
|
||||
}
|
||||
|
||||
if (MergeFunctions)
|
||||
@ -941,8 +933,7 @@ LLVMPassManagerBuilderSetSizeLevel(LLVMPassManagerBuilderRef PMB,
|
||||
void
|
||||
LLVMPassManagerBuilderSetDisableUnitAtATime(LLVMPassManagerBuilderRef PMB,
|
||||
LLVMBool Value) {
|
||||
PassManagerBuilder *Builder = unwrap(PMB);
|
||||
Builder->DisableUnitAtATime = Value;
|
||||
// NOTE: The DisableUnitAtATime switch has been removed.
|
||||
}
|
||||
|
||||
void
|
||||
|
Loading…
Reference in New Issue
Block a user