[PATCH] D51198: [LTO] Fix -save-temps with LTO and unnamed globals.

Eli Friedman via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Aug 23 16:52:01 PDT 2018


efriedma created this revision.
efriedma added reviewers: tejohnson, tobiasvk.
Herald added subscribers: dexonsmith, inglorion.

If all LLVM passes are disabled, we can't emit a summary because there could be unnamed globals in the IR.


Repository:
  rC Clang

https://reviews.llvm.org/D51198

Files:
  lib/CodeGen/BackendUtil.cpp
  test/CodeGen/summary-index-unnamed-global.ll


Index: test/CodeGen/summary-index-unnamed-global.ll
===================================================================
--- /dev/null
+++ test/CodeGen/summary-index-unnamed-global.ll
@@ -0,0 +1,8 @@
+; RUN: %clang_cc1 -flto -triple x86_64-pc-linux-gnu -emit-llvm-bc -disable-llvm-passes -x ir < %s -o - | llvm-bcanalyzer -dump | FileCheck %s
+; RUN: %clang_cc1 -flto=thin -triple x86_64-pc-linux-gnu -emit-llvm-bc -disable-llvm-passes -x ir < %s -o - | llvm-bcanalyzer -dump | FileCheck %s
+
+; CHECK-NOT:GLOBALVAL_SUMMARY_BLOCK
+
+; Make sure this doesn't crash, and we don't try to emit a module summary.
+; (The command is roughly emulating what -save-temps would do.)
+ at 0 = global i32 0
Index: lib/CodeGen/BackendUtil.cpp
===================================================================
--- lib/CodeGen/BackendUtil.cpp
+++ lib/CodeGen/BackendUtil.cpp
@@ -783,7 +783,7 @@
     break;
 
   case Backend_EmitBC:
-    if (CodeGenOpts.PrepareForThinLTO) {
+    if (CodeGenOpts.PrepareForThinLTO && !CodeGenOpts.DisableLLVMPasses) {
       if (!CodeGenOpts.ThinLinkBitcodeFile.empty()) {
         ThinLinkOS = openOutputFile(CodeGenOpts.ThinLinkBitcodeFile);
         if (!ThinLinkOS)
@@ -796,6 +796,7 @@
       // targets
       bool EmitLTOSummary =
           (CodeGenOpts.PrepareForLTO &&
+           !CodeGenOpts.DisableLLVMPasses &&
            llvm::Triple(TheModule->getTargetTriple()).getVendor() !=
                llvm::Triple::Apple);
       if (EmitLTOSummary && !TheModule->getModuleFlag("ThinLTO"))


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D51198.162302.patch
Type: text/x-patch
Size: 1515 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20180823/842c5ed8/attachment.bin>


More information about the cfe-commits mailing list