mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-21 18:29:46 +00:00
If requested, apply function merging at -O0 too. It's useful there to reduce the time to compile.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220537 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
da45b2bdbd
commit
c08a7201b7
@ -159,18 +159,22 @@ void PassManagerBuilder::populateFunctionPassManager(FunctionPassManager &FPM) {
|
||||
}
|
||||
|
||||
void PassManagerBuilder::populateModulePassManager(PassManagerBase &MPM) {
|
||||
// If all optimizations are disabled, just run the always-inline pass.
|
||||
// If all optimizations are disabled, just run the always-inline pass and,
|
||||
// if enabled, the function merging pass.
|
||||
if (OptLevel == 0) {
|
||||
if (Inliner) {
|
||||
MPM.add(Inliner);
|
||||
Inliner = nullptr;
|
||||
}
|
||||
|
||||
// FIXME: This is a HACK! The inliner pass above implicitly creates a CGSCC
|
||||
// pass manager, but we don't want to add extensions into that pass manager.
|
||||
// To prevent this we must insert a no-op module pass to reset the pass
|
||||
// manager to get the same behavior as EP_OptimizerLast in non-O0 builds.
|
||||
if (!GlobalExtensions->empty() || !Extensions.empty())
|
||||
// FIXME: The BarrierNoopPass is a HACK! The inliner pass above implicitly
|
||||
// creates a CGSCC pass manager, but we don't want to add extensions into
|
||||
// that pass manager. To prevent this we insert a no-op module pass to reset
|
||||
// the pass manager to get the same behavior as EP_OptimizerLast in non-O0
|
||||
// builds. The function merging pass is
|
||||
if (MergeFunctions)
|
||||
MPM.add(createMergeFunctionsPass());
|
||||
else if (!GlobalExtensions->empty() || !Extensions.empty())
|
||||
MPM.add(createBarrierNoopPass());
|
||||
|
||||
addExtensionsToPM(EP_EnabledOnOptLevel0, MPM);
|
||||
|
Loading…
Reference in New Issue
Block a user