diff options
| author | Adrian Prantl <aprantl@apple.com> | 2017-05-19 23:32:21 +0000 |
|---|---|---|
| committer | Adrian Prantl <aprantl@apple.com> | 2017-05-19 23:32:21 +0000 |
| commit | 660437975baecbb78f9e33d3f976426039df3564 (patch) | |
| tree | 7be0b844a79b9b820a57704ae1c1688ab16d7ab9 | |
| parent | 0de31c7e531a154e401cf0e639e78bdd76a06f6d (diff) | |
| download | bcm5719-llvm-660437975baecbb78f9e33d3f976426039df3564.tar.gz bcm5719-llvm-660437975baecbb78f9e33d3f976426039df3564.zip | |
Revert "ThinLTO: Verify bitcode before lauching the ThinLTOCodeGenerator."
This reverts commit r303438 while deliberating buildbot breakage.
llvm-svn: 303467
| -rw-r--r-- | llvm/include/llvm/Transforms/IPO/FunctionImport.h | 5 | ||||
| -rw-r--r-- | llvm/lib/LTO/ThinLTOCodeGenerator.cpp | 35 | ||||
| -rw-r--r-- | llvm/lib/Transforms/IPO/FunctionImport.cpp | 5 | ||||
| -rw-r--r-- | llvm/test/LTO/X86/Inputs/strip-debug-info-bar.ll | 15 | ||||
| -rw-r--r-- | llvm/test/LTO/X86/Inputs/strip-debug-info.bc | bin | 0 -> 852 bytes | |||
| -rw-r--r-- | llvm/test/LTO/X86/strip-debug-info.ll | 49 |
6 files changed, 7 insertions, 102 deletions
diff --git a/llvm/include/llvm/Transforms/IPO/FunctionImport.h b/llvm/include/llvm/Transforms/IPO/FunctionImport.h index 423af22828a..ed5742ab8b5 100644 --- a/llvm/include/llvm/Transforms/IPO/FunctionImport.h +++ b/llvm/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<bool> importFunctions( - Module &M, const ImportMapTy &ImportList, - Optional<std::function<void(Module &)>> PostBitcodeLoading = None); + Expected<bool> + importFunctions(Module &M, const ImportMapTy &ImportList); private: /// The summaries index used to trigger importing. diff --git a/llvm/lib/LTO/ThinLTOCodeGenerator.cpp b/llvm/lib/LTO/ThinLTOCodeGenerator.cpp index 769fe985078..327f2377d91 100644 --- a/llvm/lib/LTO/ThinLTOCodeGenerator.cpp +++ b/llvm/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<bool> LTODiscardValueNames; extern cl::opt<std::string> LTORemarksFilename; extern cl::opt<bool> LTOPassRemarksWithHotness; -extern cl::opt<bool> 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<Module> 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<bool> Result = - Importer.importFunctions(TheModule, ImportList, {verifyLoadedModule}); + Expected<bool> 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/llvm/lib/Transforms/IPO/FunctionImport.cpp b/llvm/lib/Transforms/IPO/FunctionImport.cpp index 453fd17e1d4..231487923fa 100644 --- a/llvm/lib/Transforms/IPO/FunctionImport.cpp +++ b/llvm/lib/Transforms/IPO/FunctionImport.cpp @@ -646,8 +646,7 @@ void llvm::thinLTOInternalizeModule(Module &TheModule, // index. // Expected<bool> FunctionImporter::importFunctions( - Module &DestModule, const FunctionImporter::ImportMapTy &ImportList, - Optional<std::function<void(Module &)>> PostBitcodeLoading) { + Module &DestModule, const FunctionImporter::ImportMapTy &ImportList) { DEBUG(dbgs() << "Starting import for Module " << DestModule.getModuleIdentifier() << "\n"); unsigned ImportedCount = 0; @@ -755,8 +754,6 @@ Expected<bool> 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/llvm/test/LTO/X86/Inputs/strip-debug-info-bar.ll b/llvm/test/LTO/X86/Inputs/strip-debug-info-bar.ll deleted file mode 100644 index 4269886676b..00000000000 --- a/llvm/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/llvm/test/LTO/X86/Inputs/strip-debug-info.bc b/llvm/test/LTO/X86/Inputs/strip-debug-info.bc Binary files differnew file mode 100644 index 00000000000..c83195ff9ca --- /dev/null +++ b/llvm/test/LTO/X86/Inputs/strip-debug-info.bc diff --git a/llvm/test/LTO/X86/strip-debug-info.ll b/llvm/test/LTO/X86/strip-debug-info.ll index 6b774516444..ff45ca15243 100644 --- a/llvm/test/LTO/X86/strip-debug-info.ll +++ b/llvm/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 } |

