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

Peter Collingbourne via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 17 14:05:25 PDT 2017


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

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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170317/79e1313e/attachment.html>


More information about the llvm-commits mailing list