From b4067a08330c24e38055c36a59cd046955645142 Mon Sep 17 00:00:00 2001 From: Adrian Prantl Date: Fri, 19 May 2017 23:32:21 +0000 Subject: [PATCH] Revert "ThinLTO: Verify bitcode before lauching the ThinLTOCodeGenerator." This reverts commit r303438 while deliberating buildbot breakage. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303467 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Transforms/IPO/FunctionImport.h | 5 +- lib/LTO/ThinLTOCodeGenerator.cpp | 35 +------------ lib/Transforms/IPO/FunctionImport.cpp | 5 +- test/LTO/X86/Inputs/strip-debug-info-bar.ll | 15 ------ test/LTO/X86/Inputs/strip-debug-info.bc | Bin 0 -> 852 bytes test/LTO/X86/strip-debug-info.ll | 49 +------------------ 6 files changed, 7 insertions(+), 102 deletions(-) delete mode 100644 test/LTO/X86/Inputs/strip-debug-info-bar.ll create mode 100644 test/LTO/X86/Inputs/strip-debug-info.bc diff --git a/include/llvm/Transforms/IPO/FunctionImport.h b/include/llvm/Transforms/IPO/FunctionImport.h index 423af22828a..ed5742ab8b5 100644 --- a/include/llvm/Transforms/IPO/FunctionImport.h +++ b/include/llvm/Transforms/IPO/FunctionImport.h @@ -53,9 +53,8 @@ public: : Index(Index), ModuleLoader(std::move(ModuleLoader)) {} /// Import functions in Module \p M based on the supplied import list. - Expected importFunctions( - Module &M, const ImportMapTy &ImportList, - Optional> PostBitcodeLoading = None); + Expected + importFunctions(Module &M, const ImportMapTy &ImportList); private: /// The summaries index used to trigger importing. diff --git a/lib/LTO/ThinLTOCodeGenerator.cpp b/lib/LTO/ThinLTOCodeGenerator.cpp index 769fe985078..327f2377d91 100644 --- a/lib/LTO/ThinLTOCodeGenerator.cpp +++ b/lib/LTO/ThinLTOCodeGenerator.cpp @@ -25,11 +25,9 @@ #include "llvm/Bitcode/BitcodeWriterPass.h" #include "llvm/ExecutionEngine/ObjectMemoryBuffer.h" #include "llvm/IR/DiagnosticPrinter.h" -#include "llvm/IR/DebugInfo.h" #include "llvm/IR/LLVMContext.h" #include "llvm/IR/LegacyPassManager.h" #include "llvm/IR/Mangler.h" -#include "llvm/IR/Verifier.h" #include "llvm/IRReader/IRReader.h" #include "llvm/LTO/LTO.h" #include "llvm/Linker/Linker.h" @@ -64,7 +62,6 @@ namespace llvm { extern cl::opt LTODiscardValueNames; extern cl::opt LTORemarksFilename; extern cl::opt LTOPassRemarksWithHotness; -extern cl::opt LTOStripInvalidDebugInfo; } namespace { @@ -145,30 +142,6 @@ static void promoteModule(Module &TheModule, const ModuleSummaryIndex &Index) { report_fatal_error("renameModuleForThinLTO failed"); } -namespace { -class ThinLTODiagnosticInfo : public DiagnosticInfo { - const Twine &Msg; -public: - ThinLTODiagnosticInfo(const Twine &DiagMsg, - DiagnosticSeverity Severity = DS_Error) - : DiagnosticInfo(DK_Linker, Severity), Msg(DiagMsg) {} - void print(DiagnosticPrinter &DP) const override { DP << Msg; } -}; -} - -/// Verify the module and strip broken debug info. -static void verifyLoadedModule(Module &TheModule) { - bool BrokenDebugInfo = false; - if (verifyModule(TheModule, &dbgs(), - LTOStripInvalidDebugInfo ? &BrokenDebugInfo : nullptr)) - report_fatal_error("Broken module found, compilation aborted!"); - if (BrokenDebugInfo) { - TheModule.getContext().diagnose(ThinLTODiagnosticInfo( - "Invalid debug info found, debug info will be stripped", DS_Warning)); - StripDebugInfo(TheModule); - } -} - static std::unique_ptr loadModuleFromBuffer(const MemoryBufferRef &Buffer, LLVMContext &Context, bool Lazy, bool IsImporting) { @@ -186,8 +159,6 @@ loadModuleFromBuffer(const MemoryBufferRef &Buffer, LLVMContext &Context, }); report_fatal_error("Can't load module, abort."); } - if (!Lazy) - verifyLoadedModule(*ModuleOrErr.get()); return std::move(ModuleOrErr.get()); } @@ -201,8 +172,7 @@ crossImportIntoModule(Module &TheModule, const ModuleSummaryIndex &Index, }; FunctionImporter Importer(Index, Loader); - Expected Result = - Importer.importFunctions(TheModule, ImportList, {verifyLoadedModule}); + Expected Result = Importer.importFunctions(TheModule, ImportList); if (!Result) { handleAllErrors(Result.takeError(), [&](ErrorInfoBase &EIB) { SMDiagnostic Err = SMDiagnostic(TheModule.getModuleIdentifier(), @@ -225,8 +195,7 @@ static void optimizeModule(Module &TheModule, TargetMachine &TM, PMB.OptLevel = OptLevel; PMB.LoopVectorize = true; PMB.SLPVectorize = true; - // Already did this in verifyLoadedModule(). - PMB.VerifyInput = false; + PMB.VerifyInput = true; PMB.VerifyOutput = false; legacy::PassManager PM; diff --git a/lib/Transforms/IPO/FunctionImport.cpp b/lib/Transforms/IPO/FunctionImport.cpp index 453fd17e1d4..231487923fa 100644 --- a/lib/Transforms/IPO/FunctionImport.cpp +++ b/lib/Transforms/IPO/FunctionImport.cpp @@ -646,8 +646,7 @@ void llvm::thinLTOInternalizeModule(Module &TheModule, // index. // Expected FunctionImporter::importFunctions( - Module &DestModule, const FunctionImporter::ImportMapTy &ImportList, - Optional> PostBitcodeLoading) { + Module &DestModule, const FunctionImporter::ImportMapTy &ImportList) { DEBUG(dbgs() << "Starting import for Module " << DestModule.getModuleIdentifier() << "\n"); unsigned ImportedCount = 0; @@ -755,8 +754,6 @@ Expected FunctionImporter::importFunctions( // Upgrade debug info after we're done materializing all the globals and we // have loaded all the required metadata! UpgradeDebugInfo(*SrcModule); - if (PostBitcodeLoading) - (*PostBitcodeLoading)(*SrcModule); // Link in the specified functions. if (renameModuleForThinLTO(*SrcModule, Index, &GlobalsToImport)) diff --git a/test/LTO/X86/Inputs/strip-debug-info-bar.ll b/test/LTO/X86/Inputs/strip-debug-info-bar.ll deleted file mode 100644 index 4269886676b..00000000000 --- a/test/LTO/X86/Inputs/strip-debug-info-bar.ll +++ /dev/null @@ -1,15 +0,0 @@ -target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-apple-macosx10.12" - -define void @bar() !dbg !3 { - ret void -} - -!llvm.module.flags = !{!0} -!llvm.dbg.cu = !{!1} - -!0 = !{i32 2, !"Debug Info Version", i32 3} -!1 = distinct !DICompileUnit(language: DW_LANG_C99, file: !2) -!2 = !DIFile(filename: "broken", directory: "") -!3 = distinct !DISubprogram(line: 1000, isDefinition: true) - diff --git a/test/LTO/X86/Inputs/strip-debug-info.bc b/test/LTO/X86/Inputs/strip-debug-info.bc new file mode 100644 index 0000000000000000000000000000000000000000..c83195ff9caf593aabee8f82262add183515d758 GIT binary patch literal 852 zcmXX^duUQo7(eb_cWv6$HDOx!%DH>Qf*#^(X=bFi$0{LL6g~b(W!j=}cV^2~gihD7 zW^r4i{39Zxf*@i&u%ZWTj*@btA}VN&WM&a-j3|0g(AnyP^E)5sJN$m%?>ooFKNw!1 z20#h`a4Ymx_RaSTpT94ev*D;pn!)Fs0)QvDCU1wJ2=8ThQQ^wt)(p9-SYF>=E{d8?=J0@fHn;P|m1d>ZOy{A~UjtCBs|dge4n{2Lx)rjB2Y#f6Jdc za%7wychI$}es-8+UUO`pOXt-eHs6hypYo;~#NxY=#ZkhX9apzHsr^mV!Y1U$7(#-G z1Si#6L$&^pV%ohSv`vOuG{~PoZHe&gv2l9r9sTVAJ*p?%nIw}>GTBKSaxsrNra#O+ zb``%Ac~gcrB_{D!+Stt-V}!XoJr9fiZa2Rm%spwvqa8@tg#1Dz&_o5DD4;=svq(F* zUO5JoUmSE^q(_!2bC4dzE?^Bi)T`^W>Yj7VP*^wgj>+fPPZFJ1(_rl37oConvyQ6& zMx1DGkP6~CU&8aA_-pbKe+~9Q?b{?IcnfZ)hc`V_?6r?qz`s q0)U?$l#!C67MxQ!Uq`Dd8r#n^a9Ji_Z(14?lSPnHbd2EAWc&q8b0o0< literal 0 HcmV?d00001 diff --git a/test/LTO/X86/strip-debug-info.ll b/test/LTO/X86/strip-debug-info.ll index 6b774516444..ff45ca15243 100644 --- a/test/LTO/X86/strip-debug-info.ll +++ b/test/LTO/X86/strip-debug-info.ll @@ -1,61 +1,16 @@ -; RUN: llvm-as -disable-verify %s -o %t.bc -; ---- Full LTO --------------------------------------------- ; RUN: not llvm-lto -lto-strip-invalid-debug-info=false \ -; RUN: -o %t.o %t.bc 2>&1 | \ +; RUN: -o %t.o %S/Inputs/strip-debug-info.bc 2>&1 | \ ; RUN: FileCheck %s -allow-empty -check-prefix=CHECK-ERR ; RUN: llvm-lto -lto-strip-invalid-debug-info=true \ ; RUN: -exported-symbol foo -exported-symbol _foo \ -; RUN: -o %t.o %t.bc 2>&1 | \ +; RUN: -o %t.o %S/Inputs/strip-debug-info.bc 2>&1 | \ ; RUN: FileCheck %s -allow-empty -check-prefix=CHECK-WARN ; RUN: llvm-nm %t.o | FileCheck %s -; ---- Thin LTO (codegen only) ------------------------------ -; RUN: not llvm-lto -thinlto -thinlto-action=codegen \ -; RUN: -lto-strip-invalid-debug-info=false \ -; RUN: %t.bc -disable-verify 2>&1 | \ -; RUN: FileCheck %s -allow-empty -check-prefix=CHECK-ERR -; RUN: llvm-lto -thinlto -thinlto-action=codegen \ -; RUN: -lto-strip-invalid-debug-info=true \ -; RUN: %t.bc -disable-verify 2>&1 | \ -; RUN: FileCheck %s -allow-empty -check-prefix=CHECK-WARN -; ---- Thin LTO (optimize, strip main file) ----------------- -; RUN: opt -disable-verify -module-summary %s -o %t.bc -; RUN: opt -disable-verify -module-summary %S/Inputs/strip-debug-info-bar.ll \ -; RUN: -o %t2.bc -; RUN: not llvm-lto -thinlto -thinlto-action=run \ -; RUN: -lto-strip-invalid-debug-info=false \ -; RUN: %t.bc -disable-verify 2>&1 | \ -; RUN: FileCheck %s -allow-empty -check-prefix=CHECK-ERR -; RUN: llvm-lto -thinlto -thinlto-action=run \ -; RUN: -lto-strip-invalid-debug-info=true \ -; RUN: %t.bc -disable-verify 2>&1 | \ -; RUN: FileCheck %s -allow-empty -check-prefix=CHECK-WARN -; ---- Thin LTO (optimize, strip imported file) ------------- -; RUN: opt -disable-verify -strip-debug -module-summary %t.bc -o %t-stripped.bc -; RUN: llvm-lto -thinlto-action=thinlink -o %t.index.bc %t-stripped.bc %t2.bc -; RUN: not llvm-lto -thinlto -thinlto-action=import \ -; RUN: -thinlto-index=%t.index.bc \ -; RUN: -lto-strip-invalid-debug-info=false \ -; RUN: -exported-symbol foo -exported-symbol _foo \ -; RUN: %t-stripped.bc -disable-verify 2>&1 | \ -; RUN: FileCheck %s -allow-empty -check-prefix=CHECK-ERR -; RUN: llvm-lto -thinlto -thinlto-action=import \ -; RUN: -lto-strip-invalid-debug-info=true \ -; RUN: -thinlto-index=%t.index.bc \ -; RUN: -exported-symbol foo -exported-symbol _foo \ -; RUN: %t-stripped.bc -disable-verify 2>&1 | \ -; RUN: FileCheck %s -allow-empty -check-prefix=CHECK-WARN ; CHECK-ERR: Broken module found, compilation aborted ; CHECK-WARN: Invalid debug info found, debug info will be stripped -; CHECK-WARN-NOT: Broken module found ; CHECK: foo -target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-apple-macosx10.12" - -declare void @bar() - define void @foo() { - call void @bar() ret void } -- 2.50.1