[PATCH] D53891: [LTO] Add option to enable LTOUnit splitting, and disable unless needed

Peter Collingbourne via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Dec 18 21:23:10 PST 2018


pcc added a comment.

You can't emit the type tests by default with `-flto=thin` because not all programs adhere to the conditions described in `LTOVisibility.rst` and we can't silently break those programs; it is something that they will need to explicitly opt in to. We should be able to emit the `!type` annotations by default, just not the type tests.



================
Comment at: lib/CodeGen/BackendUtil.cpp:831
+          *OS, CodeGenOpts.EmitLLVMUseLists, EmitLTOSummary,
+          /*EmitModuleHash=*/false));
     }
----------------
Why add this argument here (and below)?


================
Comment at: lib/Driver/ToolChains/Clang.cpp:5112
+  bool EnableSplitLTOUnit = Args.hasFlag(
+      options::OPT_fsplit_lto_unit, options::OPT_fno_split_lto_unit, false);
+  if (EnableSplitLTOUnit || WholeProgramVTables || Sanitize.needsLTO()) {
----------------
Should this default to `WholeProgramVTables || Sanitize.needsLTO()` and emit an error if the user passes the (for now) unsupported combinations `-fno-split-lto-unit -fwhole-program-vtables` or `-fno-split-lto-unit -fsanitize=cfi`?


Repository:
  rC Clang

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D53891/new/

https://reviews.llvm.org/D53891





More information about the cfe-commits mailing list