[llvm] r220537 - If requested, apply function merging at -O0 too. It's useful there to reduce the time to compile.

Pasi Parviainen pasi.parviainen at iki.fi
Fri Oct 24 05:09:39 PDT 2014


On 24.10.2014 2:49, Nick Lewycky 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

Last sentence of the comment seems to be incomplete.

Pasi

> +    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