diff options
-rw-r--r-- | llvm/include/llvm/IR/Verifier.h | 14 | ||||
-rw-r--r-- | llvm/lib/IR/Verifier.cpp | 10 | ||||
-rw-r--r-- | llvm/lib/LTO/LTOCodeGenerator.cpp | 20 | ||||
-rw-r--r-- | llvm/test/LTO/X86/Inputs/strip-debug-info.bc | bin | 852 -> 0 bytes | |||
-rw-r--r-- | llvm/test/LTO/X86/strip-debug-info.ll | 20 |
5 files changed, 7 insertions, 57 deletions
diff --git a/llvm/include/llvm/IR/Verifier.h b/llvm/include/llvm/IR/Verifier.h index 70bec787a4c..41a47226caf 100644 --- a/llvm/include/llvm/IR/Verifier.h +++ b/llvm/include/llvm/IR/Verifier.h @@ -41,16 +41,10 @@ bool verifyFunction(const Function &F, raw_ostream *OS = nullptr); /// \brief Check a module for errors. /// -/// If there are no errors, the function returns false. If an error is -/// found, a message describing the error is written to OS (if -/// non-null) and true is returned. -/// -/// \return true if the module is broken. If BrokenDebugInfo is -/// supplied, DebugInfo verification failures won't be considered as -/// error and instead *BrokenDebugInfo will be set to true. Debug -/// info errors can be "recovered" from by stripping the debug info. -bool verifyModule(const Module &M, raw_ostream *OS = nullptr, - bool *BrokenDebugInfo = nullptr); +/// If there are no errors, the function returns false. If an error is found, +/// a message describing the error is written to OS (if non-null) and true is +/// returned. +bool verifyModule(const Module &M, raw_ostream *OS = nullptr); /// \brief Create a verifier pass. /// diff --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp index e09f763f10b..576aefdf29a 100644 --- a/llvm/lib/IR/Verifier.cpp +++ b/llvm/lib/IR/Verifier.cpp @@ -4417,22 +4417,18 @@ bool llvm::verifyFunction(const Function &f, raw_ostream *OS) { return !V.verify(F); } -bool llvm::verifyModule(const Module &M, raw_ostream *OS, - bool *BrokenDebugInfo) { +bool llvm::verifyModule(const Module &M, raw_ostream *OS) { // Don't use a raw_null_ostream. Printing IR is expensive. - Verifier V(OS, /*ShouldTreatBrokenDebugInfoAsError=*/!BrokenDebugInfo); + Verifier V(OS, /*ShouldTreatBrokenDebugInfoAsError=*/true); bool Broken = false; for (const Function &F : M) if (!F.isDeclaration() && !F.isMaterializable()) Broken |= !V.verify(F); - Broken |= !V.verify(M); - if (BrokenDebugInfo) - *BrokenDebugInfo = V.hasBrokenDebugInfo(); // Note that this function's return value is inverted from what you would // expect of a function called "verify". - return Broken; + return !V.verify(M) || Broken; } namespace { diff --git a/llvm/lib/LTO/LTOCodeGenerator.cpp b/llvm/lib/LTO/LTOCodeGenerator.cpp index 0e1c46cff27..226004a3353 100644 --- a/llvm/lib/LTO/LTOCodeGenerator.cpp +++ b/llvm/lib/LTO/LTOCodeGenerator.cpp @@ -26,7 +26,6 @@ #include "llvm/Config/config.h" #include "llvm/IR/Constants.h" #include "llvm/IR/DataLayout.h" -#include "llvm/IR/DebugInfo.h" #include "llvm/IR/DerivedTypes.h" #include "llvm/IR/DiagnosticInfo.h" #include "llvm/IR/DiagnosticPrinter.h" @@ -79,16 +78,6 @@ cl::opt<bool> LTODiscardValueNames( cl::init(false), #endif cl::Hidden); - -cl::opt<bool> LTOStripInvalidDebugInfo( - "lto-strip-invalid-debug-info", - cl::desc("Strip invalid debug info metadata during LTO instead of aborting."), -#ifdef NDEBUG - cl::init(true), -#else - cl::init(false), -#endif - cl::Hidden); } LTOCodeGenerator::LTOCodeGenerator(LLVMContext &Context) @@ -499,15 +488,6 @@ void LTOCodeGenerator::verifyMergedModuleOnce() { return; HasVerifiedInput = true; - if (LTOStripInvalidDebugInfo) { - bool BrokenDebugInfo = false; - if (verifyModule(*MergedModule, &dbgs(), &BrokenDebugInfo)) - report_fatal_error("Broken module found, compilation aborted!"); - if (BrokenDebugInfo) { - emitWarning("Invalid debug info found, debug info will be stripped"); - StripDebugInfo(*MergedModule); - } - } if (verifyModule(*MergedModule, &dbgs())) report_fatal_error("Broken module found, compilation aborted!"); } diff --git a/llvm/test/LTO/X86/Inputs/strip-debug-info.bc b/llvm/test/LTO/X86/Inputs/strip-debug-info.bc Binary files differdeleted file mode 100644 index c83195ff9ca..00000000000 --- a/llvm/test/LTO/X86/Inputs/strip-debug-info.bc +++ /dev/null diff --git a/llvm/test/LTO/X86/strip-debug-info.ll b/llvm/test/LTO/X86/strip-debug-info.ll deleted file mode 100644 index 265a34b9c97..00000000000 --- a/llvm/test/LTO/X86/strip-debug-info.ll +++ /dev/null @@ -1,20 +0,0 @@ -; RUN: not llvm-lto -lto-strip-invalid-debug-info=false \ -; 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 -exported-symbol _foo \ -; 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 - -; CHECK-ERR: Broken module found, compilation aborted -; CHECK-WARN: Invalid debug info found, debug info will be stripped -; CHECK: foo -define void @foo() { - ret void -} - -!llvm.module.flags = !{!0} -!llvm.dbg.cu = !{!1} - -!0 = !{i32 2, !"Debug Info Version", i32 3} -!1 = !DIFile(filename: "broken", directory: "") |