[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