Author: efriedma Date: Fri Aug 24 12:31:52 2018 New Revision: 340640 URL: http://llvm.org/viewvc/llvm-project?rev=340640&view=rev Log: [LTO] Fix -save-temps with LTO and unnamed globals.
If all LLVM passes are disabled, we can't emit a summary because there could be unnamed globals in the IR. Differential Revision: https://reviews.llvm.org/D51198 Added: cfe/trunk/test/CodeGen/summary-index-unnamed-global.ll Modified: cfe/trunk/lib/CodeGen/BackendUtil.cpp Modified: cfe/trunk/lib/CodeGen/BackendUtil.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/BackendUtil.cpp?rev=340640&r1=340639&r2=340640&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/BackendUtil.cpp (original) +++ cfe/trunk/lib/CodeGen/BackendUtil.cpp Fri Aug 24 12:31:52 2018 @@ -783,7 +783,7 @@ void EmitAssemblyHelper::EmitAssembly(Ba 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 @@ void EmitAssemblyHelper::EmitAssembly(Ba // targets bool EmitLTOSummary = (CodeGenOpts.PrepareForLTO && + !CodeGenOpts.DisableLLVMPasses && llvm::Triple(TheModule->getTargetTriple()).getVendor() != llvm::Triple::Apple); if (EmitLTOSummary && !TheModule->getModuleFlag("ThinLTO")) @@ -1014,7 +1015,7 @@ void EmitAssemblyHelper::EmitAssemblyWit break; case Backend_EmitBC: - if (CodeGenOpts.PrepareForThinLTO) { + if (CodeGenOpts.PrepareForThinLTO && !CodeGenOpts.DisableLLVMPasses) { if (!CodeGenOpts.ThinLinkBitcodeFile.empty()) { ThinLinkOS = openOutputFile(CodeGenOpts.ThinLinkBitcodeFile); if (!ThinLinkOS) @@ -1027,6 +1028,7 @@ void EmitAssemblyHelper::EmitAssemblyWit // targets bool EmitLTOSummary = (CodeGenOpts.PrepareForLTO && + !CodeGenOpts.DisableLLVMPasses && llvm::Triple(TheModule->getTargetTriple()).getVendor() != llvm::Triple::Apple); if (EmitLTOSummary && !TheModule->getModuleFlag("ThinLTO")) Added: cfe/trunk/test/CodeGen/summary-index-unnamed-global.ll URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/summary-index-unnamed-global.ll?rev=340640&view=auto ============================================================================== --- cfe/trunk/test/CodeGen/summary-index-unnamed-global.ll (added) +++ cfe/trunk/test/CodeGen/summary-index-unnamed-global.ll Fri Aug 24 12:31:52 2018 @@ -0,0 +1,10 @@ +; 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 +; RUN: %clang_cc1 -fexperimental-new-pass-manager -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 -fexperimental-new-pass-manager -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.) +@0 = global i32 0 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits