[PATCH] D31100: [LTO] Allow client to skip code gen

Teresa Johnson via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 17 14:09:56 PDT 2017


On Fri, Mar 17, 2017 at 2:05 PM, Peter Collingbourne <peter at pcc.me.uk>
wrote:

> Can you achieve this by setting PreCodeGenModuleHook to a function that
> returns false?
>

I thought about that, but it seemed clearer to be explicit about the
intent. I thought the intended purpose of returning when a hook returned
false was that it was to flag error conditions?

Teresa


> Peter
>
>
> On Mar 17, 2017 14:01, "Teresa Johnson via Phabricator" <
> reviews at reviews.llvm.org> wrote:
>
> tejohnson created this revision.
> Herald added a subscriber: mehdi_amini.
>
> This is useful when invoking the ThinLTO backend via clang, which
> already has handling (immediately after the existing early return
> when invoking the ThinLTO backend) for setting up the requested code
> generation.
>
> We noticed that when invoking the thinBackend via clang (for the
> distributed build case) that flags like -ffunction-sections and
> -emit-llvm were not having the intended effect. This could have been
> fixed by setting up the TargetOptions and the CodeGenFileType in the LTO
> Config, but since clang already has handling for all of this, it is
> straightforward to just let it do the handling.
>
>
> https://reviews.llvm.org/D31100
>
> Files:
>   include/llvm/LTO/Config.h
>   lib/LTO/LTOBackend.cpp
>
>
> Index: lib/LTO/LTOBackend.cpp
> ===================================================================
> --- lib/LTO/LTOBackend.cpp
> +++ lib/LTO/LTOBackend.cpp
> @@ -269,6 +269,9 @@
>    if (Conf.PreCodeGenModuleHook && !Conf.PreCodeGenModuleHook(Task, Mod))
>      return;
>
> +  if (Conf.SkipCodeGen)
> +    return;
> +
>    auto Stream = AddStream(Task);
>    legacy::PassManager CodeGenPasses;
>    if (TM->addPassesToEmitFile(CodeGenPasses, *Stream->OS,
> Conf.CGFileType))
> Index: include/llvm/LTO/Config.h
> ===================================================================
> --- include/llvm/LTO/Config.h
> +++ include/llvm/LTO/Config.h
> @@ -49,6 +49,9 @@
>    /// Disable entirely the optimizer, including importing for ThinLTO
>    bool CodeGenOnly = false;
>
> +  /// Skip code generation, the client is responsible for it.
> +  bool SkipCodeGen = false;
> +
>    /// If this field is set, the set of passes run in the middle-end
> optimizer
>    /// will be the one specified by the string. Only works with the new
> pass
>    /// manager as the old one doesn't have this ability.
>
>
>
>


-- 
Teresa Johnson |  Software Engineer |  tejohnson at google.com |  408-460-2413
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170317/27baa8bd/attachment.html>


More information about the llvm-commits mailing list