[llvm] r220537 - If requested, apply function merging at -O0 too. It's useful there to reduce the time to compile.
Rafael Avila de Espindola
rafael.espindola at gmail.com
Fri Oct 24 08:08:04 PDT 2014
Testcase?
Sent from my iPhone
> On Oct 23, 2014, at 19:49, Nick Lewycky <nicholas at mxc.ca> wrote:
>
> Author: nicholas
> Date: Thu Oct 23 18:49:31 2014
> New Revision: 220537
>
> URL: http://llvm.org/viewvc/llvm-project?rev=220537&view=rev
> Log:
> If requested, apply function merging at -O0 too. It's useful there to reduce the time to compile.
>
> Modified:
> llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp
>
> Modified: llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp?rev=220537&r1=220536&r2=220537&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp (original)
> +++ llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp Thu Oct 23 18:49:31 2014
> @@ -159,18 +159,22 @@ void PassManagerBuilder::populateFunctio
> }
>
> 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);
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list