summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/include/llvm/AsmParser/Parser.h28
-rw-r--r--llvm/include/llvm/IRReader/IRReader.h12
-rw-r--r--llvm/lib/AsmParser/LLParser.cpp3
-rw-r--r--llvm/lib/AsmParser/LLParser.h9
-rw-r--r--llvm/lib/AsmParser/Parser.cpp24
-rw-r--r--llvm/lib/IR/AutoUpgrade.cpp24
-rw-r--r--llvm/lib/IR/DebugInfo.cpp2
-rw-r--r--llvm/lib/IR/Metadata.cpp1
-rw-r--r--llvm/lib/IR/Verifier.cpp29
-rw-r--r--llvm/lib/IRReader/IRReader.cpp11
-rw-r--r--llvm/lib/LTO/LTOCodeGenerator.cpp13
-rw-r--r--llvm/lib/LTO/ThinLTOCodeGenerator.cpp4
-rw-r--r--llvm/test/Analysis/GlobalsModRef/pr12351.ll2
-rw-r--r--llvm/test/DebugInfo/Generic/invalid.ll3
-rw-r--r--llvm/test/DebugInfo/Generic/location-verifier.ll3
-rw-r--r--llvm/test/DebugInfo/Generic/piece-verifier.ll3
-rw-r--r--llvm/test/DebugInfo/pr34186.ll4
-rw-r--r--llvm/test/DebugInfo/pr34672.ll2
-rw-r--r--llvm/test/LTO/X86/strip-debug-info-no-call-loc.ll5
-rw-r--r--llvm/test/LTO/X86/strip-debug-info.ll24
-rw-r--r--llvm/test/Verifier/DILocation-parents.ll4
-rw-r--r--llvm/test/Verifier/DISubprogram.ll3
-rw-r--r--llvm/test/Verifier/callsite-dbgloc.ll4
-rw-r--r--llvm/test/Verifier/dbg-difile-crash.ll6
-rw-r--r--llvm/test/Verifier/dbg-invalid-compileunit.ll4
-rw-r--r--llvm/test/Verifier/dbg-invalid-named-metadata.ll4
-rw-r--r--llvm/test/Verifier/dbg-invalid-retaintypes.ll4
-rw-r--r--llvm/test/Verifier/dbg-line-without-file.ll4
-rw-r--r--llvm/test/Verifier/dbg-null-retained-type.ll6
-rw-r--r--llvm/test/Verifier/dbg.ll3
-rw-r--r--llvm/test/Verifier/diglobalvariable.ll3
-rw-r--r--llvm/test/Verifier/fnarg-debuginfo.ll4
-rw-r--r--llvm/test/Verifier/fragment.ll3
-rw-r--r--llvm/test/Verifier/func-dbg.ll3
-rw-r--r--llvm/test/Verifier/llvm.dbg.declare-address.ll3
-rw-r--r--llvm/test/Verifier/llvm.dbg.declare-expression.ll3
-rw-r--r--llvm/test/Verifier/llvm.dbg.declare-variable.ll3
-rw-r--r--llvm/test/Verifier/llvm.dbg.value-expression.ll3
-rw-r--r--llvm/test/Verifier/llvm.dbg.value-value.ll3
-rw-r--r--llvm/test/Verifier/llvm.dbg.value-variable.ll3
-rw-r--r--llvm/test/Verifier/metadata-function-dbg.ll3
-rw-r--r--llvm/test/Verifier/pr34325.ll3
-rw-r--r--llvm/test/Verifier/tbaa.ll2
-rw-r--r--llvm/tools/llvm-as/llvm-as.cpp3
-rw-r--r--llvm/tools/opt/opt.cpp3
-rw-r--r--llvm/unittests/IR/VerifierTest.cpp38
46 files changed, 155 insertions, 176 deletions
diff --git a/llvm/include/llvm/AsmParser/Parser.h b/llvm/include/llvm/AsmParser/Parser.h
index 768b089b8a2..5f02e488e5b 100644
--- a/llvm/include/llvm/AsmParser/Parser.h
+++ b/llvm/include/llvm/AsmParser/Parser.h
@@ -36,10 +36,12 @@ class Type;
/// \param Context Context in which to allocate globals info.
/// \param Slots The optional slot mapping that will be initialized during
/// parsing.
-std::unique_ptr<Module> parseAssemblyFile(StringRef Filename,
- SMDiagnostic &Error,
- LLVMContext &Context,
- SlotMapping *Slots = nullptr);
+/// \param UpgradeDebugInfo Run UpgradeDebugInfo, which runs the Verifier.
+/// This option should only be set to false by llvm-as
+/// for use inside the LLVM testuite!
+std::unique_ptr<Module>
+parseAssemblyFile(StringRef Filename, SMDiagnostic &Error, LLVMContext &Context,
+ SlotMapping *Slots = nullptr, bool UpgradeDebugInfo = true);
/// The function is a secondary interface to the LLVM Assembly Parser. It parses
/// an ASCII string that (presumably) contains LLVM Assembly code. It returns a
@@ -52,10 +54,14 @@ std::unique_ptr<Module> parseAssemblyFile(StringRef Filename,
/// \param Context Context in which to allocate globals info.
/// \param Slots The optional slot mapping that will be initialized during
/// parsing.
+/// \param UpgradeDebugInfo Run UpgradeDebugInfo, which runs the Verifier.
+/// This option should only be set to false by llvm-as
+/// for use inside the LLVM testuite!
std::unique_ptr<Module> parseAssemblyString(StringRef AsmString,
SMDiagnostic &Error,
LLVMContext &Context,
- SlotMapping *Slots = nullptr);
+ SlotMapping *Slots = nullptr,
+ bool UpgradeDebugInfo = true);
/// parseAssemblyFile and parseAssemblyString are wrappers around this function.
/// \brief Parse LLVM Assembly from a MemoryBuffer.
@@ -63,9 +69,13 @@ std::unique_ptr<Module> parseAssemblyString(StringRef AsmString,
/// \param Err Error result info.
/// \param Slots The optional slot mapping that will be initialized during
/// parsing.
+/// \param UpgradeDebugInfo Run UpgradeDebugInfo, which runs the Verifier.
+/// This option should only be set to false by llvm-as
+/// for use inside the LLVM testuite!
std::unique_ptr<Module> parseAssembly(MemoryBufferRef F, SMDiagnostic &Err,
LLVMContext &Context,
- SlotMapping *Slots = nullptr);
+ SlotMapping *Slots = nullptr,
+ bool UpgradeDebugInfo = true);
/// This function is the low-level interface to the LLVM Assembly Parser.
/// This is kept as an independent function instead of being inlined into
@@ -78,8 +88,12 @@ std::unique_ptr<Module> parseAssembly(MemoryBufferRef F, SMDiagnostic &Err,
/// \param Slots The optional slot mapping that will be initialized during
/// parsing.
/// \return true on error.
+/// \param UpgradeDebugInfo Run UpgradeDebugInfo, which runs the Verifier.
+/// This option should only be set to false by llvm-as
+/// for use inside the LLVM testuite!
bool parseAssemblyInto(MemoryBufferRef F, Module &M, SMDiagnostic &Err,
- SlotMapping *Slots = nullptr);
+ SlotMapping *Slots = nullptr,
+ bool UpgradeDebugInfo = true);
/// Parse a type and a constant value in the given string.
///
diff --git a/llvm/include/llvm/IRReader/IRReader.h b/llvm/include/llvm/IRReader/IRReader.h
index 7b24ec11fb6..f5621647db0 100644
--- a/llvm/include/llvm/IRReader/IRReader.h
+++ b/llvm/include/llvm/IRReader/IRReader.h
@@ -37,14 +37,22 @@ getLazyIRFileModule(StringRef Filename, SMDiagnostic &Err, LLVMContext &Context,
/// If the given MemoryBuffer holds a bitcode image, return a Module
/// for it. Otherwise, attempt to parse it as LLVM Assembly and return
/// a Module for it.
+/// \param UpgradeDebugInfo Run UpgradeDebugInfo, which runs the Verifier.
+/// This option should only be set to false by llvm-as
+/// for use inside the LLVM testuite!
std::unique_ptr<Module> parseIR(MemoryBufferRef Buffer, SMDiagnostic &Err,
- LLVMContext &Context);
+ LLVMContext &Context,
+ bool UpgradeDebugInfo = true);
/// If the given file holds a bitcode image, return a Module for it.
/// Otherwise, attempt to parse it as LLVM Assembly and return a Module
/// for it.
+/// \param UpgradeDebugInfo Run UpgradeDebugInfo, which runs the Verifier.
+/// This option should only be set to false by llvm-as
+/// for use inside the LLVM testuite!
std::unique_ptr<Module> parseIRFile(StringRef Filename, SMDiagnostic &Err,
- LLVMContext &Context);
+ LLVMContext &Context,
+ bool UpgradeDebugInfo = true);
}
#endif
diff --git a/llvm/lib/AsmParser/LLParser.cpp b/llvm/lib/AsmParser/LLParser.cpp
index 9ae5ff1f6ef..4dc5d81cd08 100644
--- a/llvm/lib/AsmParser/LLParser.cpp
+++ b/llvm/lib/AsmParser/LLParser.cpp
@@ -237,7 +237,8 @@ bool LLParser::ValidateEndOfModule() {
}
}
- UpgradeDebugInfo(*M);
+ if (UpgradeDebugInfo)
+ llvm::UpgradeDebugInfo(*M);
UpgradeModuleFlags(*M);
diff --git a/llvm/lib/AsmParser/LLParser.h b/llvm/lib/AsmParser/LLParser.h
index d5b059355c4..5dadf521538 100644
--- a/llvm/lib/AsmParser/LLParser.h
+++ b/llvm/lib/AsmParser/LLParser.h
@@ -139,11 +139,16 @@ namespace llvm {
std::map<Value*, std::vector<unsigned> > ForwardRefAttrGroups;
std::map<unsigned, AttrBuilder> NumberedAttrBuilders;
+ /// Only the llvm-as tool may set this to false to bypass
+ /// UpgradeDebuginfo so it can generate broken bitcode.
+ bool UpgradeDebugInfo;
+
public:
LLParser(StringRef F, SourceMgr &SM, SMDiagnostic &Err, Module *M,
- SlotMapping *Slots = nullptr)
+ SlotMapping *Slots = nullptr, bool UpgradeDebugInfo = true)
: Context(M->getContext()), Lex(F, SM, Err, M->getContext()), M(M),
- Slots(Slots), BlockAddressPFS(nullptr) {}
+ Slots(Slots), BlockAddressPFS(nullptr),
+ UpgradeDebugInfo(UpgradeDebugInfo) {}
bool Run();
bool parseStandaloneConstantValue(Constant *&C, const SlotMapping *Slots);
diff --git a/llvm/lib/AsmParser/Parser.cpp b/llvm/lib/AsmParser/Parser.cpp
index bee07ad9e0a..a43ae2b5577 100644
--- a/llvm/lib/AsmParser/Parser.cpp
+++ b/llvm/lib/AsmParser/Parser.cpp
@@ -23,22 +23,21 @@
using namespace llvm;
bool llvm::parseAssemblyInto(MemoryBufferRef F, Module &M, SMDiagnostic &Err,
- SlotMapping *Slots) {
+ SlotMapping *Slots, bool UpgradeDebugInfo) {
SourceMgr SM;
std::unique_ptr<MemoryBuffer> Buf = MemoryBuffer::getMemBuffer(F);
SM.AddNewSourceBuffer(std::move(Buf), SMLoc());
- return LLParser(F.getBuffer(), SM, Err, &M, Slots).Run();
+ return LLParser(F.getBuffer(), SM, Err, &M, Slots, UpgradeDebugInfo).Run();
}
-std::unique_ptr<Module> llvm::parseAssembly(MemoryBufferRef F,
- SMDiagnostic &Err,
- LLVMContext &Context,
- SlotMapping *Slots) {
+std::unique_ptr<Module>
+llvm::parseAssembly(MemoryBufferRef F, SMDiagnostic &Err, LLVMContext &Context,
+ SlotMapping *Slots, bool UpgradeDebugInfo) {
std::unique_ptr<Module> M =
make_unique<Module>(F.getBufferIdentifier(), Context);
- if (parseAssemblyInto(F, *M, Err, Slots))
+ if (parseAssemblyInto(F, *M, Err, Slots, UpgradeDebugInfo))
return nullptr;
return M;
@@ -47,7 +46,8 @@ std::unique_ptr<Module> llvm::parseAssembly(MemoryBufferRef F,
std::unique_ptr<Module> llvm::parseAssemblyFile(StringRef Filename,
SMDiagnostic &Err,
LLVMContext &Context,
- SlotMapping *Slots) {
+ SlotMapping *Slots,
+ bool UpgradeDebugInfo) {
ErrorOr<std::unique_ptr<MemoryBuffer>> FileOrErr =
MemoryBuffer::getFileOrSTDIN(Filename);
if (std::error_code EC = FileOrErr.getError()) {
@@ -56,15 +56,17 @@ std::unique_ptr<Module> llvm::parseAssemblyFile(StringRef Filename,
return nullptr;
}
- return parseAssembly(FileOrErr.get()->getMemBufferRef(), Err, Context, Slots);
+ return parseAssembly(FileOrErr.get()->getMemBufferRef(), Err, Context, Slots,
+ UpgradeDebugInfo);
}
std::unique_ptr<Module> llvm::parseAssemblyString(StringRef AsmString,
SMDiagnostic &Err,
LLVMContext &Context,
- SlotMapping *Slots) {
+ SlotMapping *Slots,
+ bool UpgradeDebugInfo) {
MemoryBufferRef F(AsmString, "<string>");
- return parseAssembly(F, Err, Context, Slots);
+ return parseAssembly(F, Err, Context, Slots, UpgradeDebugInfo);
}
Constant *llvm::parseConstantValue(StringRef Asm, SMDiagnostic &Err,
diff --git a/llvm/lib/IR/AutoUpgrade.cpp b/llvm/lib/IR/AutoUpgrade.cpp
index 2a69912671e..e190b201ccc 100644
--- a/llvm/lib/IR/AutoUpgrade.cpp
+++ b/llvm/lib/IR/AutoUpgrade.cpp
@@ -27,6 +27,7 @@
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Module.h"
+#include "llvm/IR/Verifier.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/Regex.h"
#include <cstring>
@@ -2358,15 +2359,26 @@ Value *llvm::UpgradeBitCastExpr(unsigned Opc, Constant *C, Type *DestTy) {
/// info. Return true if module is modified.
bool llvm::UpgradeDebugInfo(Module &M) {
unsigned Version = getDebugMetadataVersionFromModule(M);
- if (Version == DEBUG_METADATA_VERSION)
- return false;
-
- bool RetCode = StripDebugInfo(M);
- if (RetCode) {
+ if (Version == DEBUG_METADATA_VERSION) {
+ bool BrokenDebugInfo = false;
+ if (verifyModule(M, &llvm::errs(), &BrokenDebugInfo))
+ report_fatal_error("Broken module found, compilation aborted!");
+ if (!BrokenDebugInfo)
+ // Everything is ok.
+ return false;
+ else {
+ // Diagnose malformed debug info.
+ DiagnosticInfoIgnoringInvalidDebugMetadata Diag(M);
+ M.getContext().diagnose(Diag);
+ }
+ }
+ bool Modified = StripDebugInfo(M);
+ if (Modified && Version != DEBUG_METADATA_VERSION) {
+ // Diagnose a version mismatch.
DiagnosticInfoDebugMetadataVersion DiagVersion(M, Version);
M.getContext().diagnose(DiagVersion);
}
- return RetCode;
+ return Modified;
}
bool llvm::UpgradeModuleFlags(Module &M) {
diff --git a/llvm/lib/IR/DebugInfo.cpp b/llvm/lib/IR/DebugInfo.cpp
index 289798648b5..ae044b3d287 100644
--- a/llvm/lib/IR/DebugInfo.cpp
+++ b/llvm/lib/IR/DebugInfo.cpp
@@ -290,7 +290,7 @@ static MDNode *stripDebugLocFromLoopID(MDNode *N) {
bool llvm::stripDebugInfo(Function &F) {
bool Changed = false;
- if (F.getSubprogram()) {
+ if (F.getMetadata(LLVMContext::MD_dbg)) {
Changed = true;
F.setSubprogram(nullptr);
}
diff --git a/llvm/lib/IR/Metadata.cpp b/llvm/lib/IR/Metadata.cpp
index ac02ff76c84..a148ab65fc8 100644
--- a/llvm/lib/IR/Metadata.cpp
+++ b/llvm/lib/IR/Metadata.cpp
@@ -1431,7 +1431,6 @@ void GlobalObject::setMetadata(StringRef Kind, MDNode *N) {
MDNode *GlobalObject::getMetadata(unsigned KindID) const {
SmallVector<MDNode *, 1> MDs;
getMetadata(KindID, MDs);
- assert(MDs.size() <= 1 && "Expected at most one metadata attachment");
if (MDs.empty())
return nullptr;
return MDs[0];
diff --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp
index 57559356f4d..7c6e4585b9e 100644
--- a/llvm/lib/IR/Verifier.cpp
+++ b/llvm/lib/IR/Verifier.cpp
@@ -4684,19 +4684,8 @@ struct VerifierLegacyPass : public FunctionPass {
HasErrors |= !V->verify(F);
HasErrors |= !V->verify();
- if (FatalErrors) {
- if (HasErrors)
- report_fatal_error("Broken module found, compilation aborted!");
- assert(!V->hasBrokenDebugInfo() && "Module contains invalid debug info");
- }
-
- // Strip broken debug info.
- if (V->hasBrokenDebugInfo()) {
- DiagnosticInfoIgnoringInvalidDebugMetadata DiagInvalid(M);
- M.getContext().diagnose(DiagInvalid);
- if (!StripDebugInfo(M))
- report_fatal_error("Failed to strip malformed debug info");
- }
+ if (FatalErrors && (HasErrors || V->hasBrokenDebugInfo()))
+ report_fatal_error("Broken module found, compilation aborted!");
return false;
}
@@ -4999,19 +4988,9 @@ VerifierAnalysis::Result VerifierAnalysis::run(Function &F,
PreservedAnalyses VerifierPass::run(Module &M, ModuleAnalysisManager &AM) {
auto Res = AM.getResult<VerifierAnalysis>(M);
- if (FatalErrors) {
- if (Res.IRBroken)
- report_fatal_error("Broken module found, compilation aborted!");
- assert(!Res.DebugInfoBroken && "Module contains invalid debug info");
- }
+ if (FatalErrors && (Res.IRBroken || Res.DebugInfoBroken))
+ report_fatal_error("Broken module found, compilation aborted!");
- // Strip broken debug info.
- if (Res.DebugInfoBroken) {
- DiagnosticInfoIgnoringInvalidDebugMetadata DiagInvalid(M);
- M.getContext().diagnose(DiagInvalid);
- if (!StripDebugInfo(M))
- report_fatal_error("Failed to strip malformed debug info");
- }
return PreservedAnalyses::all();
}
diff --git a/llvm/lib/IRReader/IRReader.cpp b/llvm/lib/IRReader/IRReader.cpp
index ba587ced718..c4ba659fd05 100644
--- a/llvm/lib/IRReader/IRReader.cpp
+++ b/llvm/lib/IRReader/IRReader.cpp
@@ -68,7 +68,8 @@ std::unique_ptr<Module> llvm::getLazyIRFileModule(StringRef Filename,
}
std::unique_ptr<Module> llvm::parseIR(MemoryBufferRef Buffer, SMDiagnostic &Err,
- LLVMContext &Context) {
+ LLVMContext &Context,
+ bool UpgradeDebugInfo) {
NamedRegionTimer T(TimeIRParsingName, TimeIRParsingDescription,
TimeIRParsingGroupName, TimeIRParsingGroupDescription,
TimePassesIsEnabled);
@@ -86,11 +87,12 @@ std::unique_ptr<Module> llvm::parseIR(MemoryBufferRef Buffer, SMDiagnostic &Err,
return std::move(ModuleOrErr.get());
}
- return parseAssembly(Buffer, Err, Context);
+ return parseAssembly(Buffer, Err, Context, nullptr, UpgradeDebugInfo);
}
std::unique_ptr<Module> llvm::parseIRFile(StringRef Filename, SMDiagnostic &Err,
- LLVMContext &Context) {
+ LLVMContext &Context,
+ bool UpgradeDebugInfo) {
ErrorOr<std::unique_ptr<MemoryBuffer>> FileOrErr =
MemoryBuffer::getFileOrSTDIN(Filename);
if (std::error_code EC = FileOrErr.getError()) {
@@ -99,7 +101,8 @@ std::unique_ptr<Module> llvm::parseIRFile(StringRef Filename, SMDiagnostic &Err,
return nullptr;
}
- return parseIR(FileOrErr.get()->getMemBufferRef(), Err, Context);
+ return parseIR(FileOrErr.get()->getMemBufferRef(), Err, Context,
+ UpgradeDebugInfo);
}
//===----------------------------------------------------------------------===//
diff --git a/llvm/lib/LTO/LTOCodeGenerator.cpp b/llvm/lib/LTO/LTOCodeGenerator.cpp
index 0e6c3edb140..9693a7c254c 100644
--- a/llvm/lib/LTO/LTOCodeGenerator.cpp
+++ b/llvm/lib/LTO/LTOCodeGenerator.cpp
@@ -83,16 +83,6 @@ cl::opt<bool> LTODiscardValueNames(
#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);
-
cl::opt<std::string>
LTORemarksFilename("lto-pass-remarks-output",
cl::desc("Output filename for pass remarks"),
@@ -495,8 +485,7 @@ void LTOCodeGenerator::verifyMergedModuleOnce() {
HasVerifiedInput = true;
bool BrokenDebugInfo = false;
- if (verifyModule(*MergedModule, &dbgs(),
- LTOStripInvalidDebugInfo ? &BrokenDebugInfo : nullptr))
+ 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");
diff --git a/llvm/lib/LTO/ThinLTOCodeGenerator.cpp b/llvm/lib/LTO/ThinLTOCodeGenerator.cpp
index ffd78dad922..c8b3892375f 100644
--- a/llvm/lib/LTO/ThinLTOCodeGenerator.cpp
+++ b/llvm/lib/LTO/ThinLTOCodeGenerator.cpp
@@ -63,7 +63,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 {
@@ -158,8 +157,7 @@ public:
/// Verify the module and strip broken debug info.
static void verifyLoadedModule(Module &TheModule) {
bool BrokenDebugInfo = false;
- if (verifyModule(TheModule, &dbgs(),
- LTOStripInvalidDebugInfo ? &BrokenDebugInfo : nullptr))
+ if (verifyModule(TheModule, &dbgs(), &BrokenDebugInfo))
report_fatal_error("Broken module found, compilation aborted!");
if (BrokenDebugInfo) {
TheModule.getContext().diagnose(ThinLTODiagnosticInfo(
diff --git a/llvm/test/Analysis/GlobalsModRef/pr12351.ll b/llvm/test/Analysis/GlobalsModRef/pr12351.ll
index 5d299cd2e91..5cabd6f1f12 100644
--- a/llvm/test/Analysis/GlobalsModRef/pr12351.ll
+++ b/llvm/test/Analysis/GlobalsModRef/pr12351.ll
@@ -1,4 +1,4 @@
-; RUN: opt < %s -basicaa -globals-aa -gvn -S | FileCheck %s
+; RUN: opt < %s -basicaa -globals-aa -gvn -S -disable-verify | FileCheck %s
declare void @llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)
define void @foo(i8* %x, i8* %y) {
diff --git a/llvm/test/DebugInfo/Generic/invalid.ll b/llvm/test/DebugInfo/Generic/invalid.ll
index fdb68d9cca3..9bf9e6374fc 100644
--- a/llvm/test/DebugInfo/Generic/invalid.ll
+++ b/llvm/test/DebugInfo/Generic/invalid.ll
@@ -1,4 +1,4 @@
-; RUN: not opt -verify %s 2>&1 | FileCheck %s
+; RUN: llvm-as -disable-output %s 2>&1 | FileCheck %s
; Make sure we emit this diagnostic only once (which means we don't visit the
; same DISubprogram twice.
@@ -6,6 +6,7 @@
; CHECK-NEXT: !3 = distinct !DISubprogram(name: "patatino", scope: null, isLocal: false, isDefinition: true, isOptimized: false)
; CHECK-NOT: subprogram definitions must have a compile unit
; CHECK-NOT: !3 = distinct !DISubprogram(name: "patatino", scope: null, isLocal: false, isDefinition: true, isOptimized: false)
+; CHECK: warning: ignoring invalid debug info
define void @tinkywinky() !dbg !3 { ret void }
diff --git a/llvm/test/DebugInfo/Generic/location-verifier.ll b/llvm/test/DebugInfo/Generic/location-verifier.ll
index 3decb7c9f17..b1e0805428c 100644
--- a/llvm/test/DebugInfo/Generic/location-verifier.ll
+++ b/llvm/test/DebugInfo/Generic/location-verifier.ll
@@ -1,4 +1,4 @@
-; RUN: not llvm-as -disable-output -verify-debug-info < %s 2>&1 | FileCheck %s
+; RUN: llvm-as -disable-output -verify-debug-info -o - < %s 2>&1 | FileCheck %s
; ModuleID = 'test.c'
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx10.10.0"
@@ -30,3 +30,4 @@ attributes #0 = { nounwind ssp uwtable }
; An old-style DILocation should not pass verify.
; CHECK: invalid !dbg metadata attachment
!13 = !{i32 2, i32 2, !4, null}
+; CHECK: warning: ignoring invalid debug info
diff --git a/llvm/test/DebugInfo/Generic/piece-verifier.ll b/llvm/test/DebugInfo/Generic/piece-verifier.ll
index e692e51a703..f7a53f22915 100644
--- a/llvm/test/DebugInfo/Generic/piece-verifier.ll
+++ b/llvm/test/DebugInfo/Generic/piece-verifier.ll
@@ -1,4 +1,4 @@
-; RUN: not llvm-as -disable-output < %s 2>&1 | FileCheck %s
+; RUN: llvm-as -disable-output < %s 2>&1 | FileCheck %s
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx10.9.0"
@@ -53,3 +53,4 @@ attributes #1 = { nounwind readnone }
; CHECK-NEXT: !DIExpression({{[0-9]+}}, 64, 32, {{[0-9]+}})
; CHECK-NOT: invalid expression
!27 = !DIExpression(DW_OP_LLVM_fragment, 64, 32, DW_OP_deref)
+; CHECK: warning: ignoring invalid debug info
diff --git a/llvm/test/DebugInfo/pr34186.ll b/llvm/test/DebugInfo/pr34186.ll
index 4432a278e51..36dc5c41ace 100644
--- a/llvm/test/DebugInfo/pr34186.ll
+++ b/llvm/test/DebugInfo/pr34186.ll
@@ -5,9 +5,11 @@
; alternative is that of keeping a map of visited GVs, which has non trivial
; memory usage consequences on large testcases, or when LTO is the mode of
; operation.
-; RUN: not llc %s 2>&1 | FileCheck %s
+; RUN: llvm-as -disable-output %s -o - 2>&1 | FileCheck %s
; CHECK: missing global variable type
; CHECK: missing global variable type
+; CHECK-NOT: missing global variable type
+; CHECK: warning: ignoring invalid debug info
!llvm.dbg.cu = !{!2}
!llvm.module.flags = !{!63, !64}
diff --git a/llvm/test/DebugInfo/pr34672.ll b/llvm/test/DebugInfo/pr34672.ll
index 49be0e3351c..c944a11fc40 100644
--- a/llvm/test/DebugInfo/pr34672.ll
+++ b/llvm/test/DebugInfo/pr34672.ll
@@ -1,4 +1,4 @@
-; RUN: not opt -verify %s 2>&1 | FileCheck %s
+; RUN: opt -verify %s 2>&1 | FileCheck %s
; CHECK: invalid type ref
; CHECK-NOT: invalid type ref
diff --git a/llvm/test/LTO/X86/strip-debug-info-no-call-loc.ll b/llvm/test/LTO/X86/strip-debug-info-no-call-loc.ll
index 39b8c40c3a4..4a684b276b7 100644
--- a/llvm/test/LTO/X86/strip-debug-info-no-call-loc.ll
+++ b/llvm/test/LTO/X86/strip-debug-info-no-call-loc.ll
@@ -1,6 +1,5 @@
; RUN: llvm-as %s -disable-verify -o %t.bc
-; RUN: llvm-lto -lto-strip-invalid-debug-info=true \
-; RUN: -exported-symbol f -exported-symbol _f \
+; RUN: llvm-lto -exported-symbol f -exported-symbol _f \
; RUN: -o %t.o %t.bc 2>&1 | \
; RUN: FileCheck %s -allow-empty -check-prefix=CHECK-WARN
; RUN: llvm-nm %t.o | FileCheck %s
@@ -8,7 +7,7 @@
; Check that missing debug locations on inlinable calls are a
; recoverable error.
-; CHECK-WARN: Invalid debug info found, debug info will be stripped
+; CHECK-WARN: warning{{.*}} ignoring invalid debug info
; CHECK: {{f$}}
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx"
diff --git a/llvm/test/LTO/X86/strip-debug-info.ll b/llvm/test/LTO/X86/strip-debug-info.ll
index 6b774516444..f8db5a15fe9 100644
--- a/llvm/test/LTO/X86/strip-debug-info.ll
+++ b/llvm/test/LTO/X86/strip-debug-info.ll
@@ -1,52 +1,32 @@
; 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: FileCheck %s -allow-empty -check-prefix=CHECK-ERR
-; RUN: llvm-lto -lto-strip-invalid-debug-info=true \
+; RUN: llvm-lto \
; RUN: -exported-symbol foo -exported-symbol _foo \
; RUN: -o %t.o %t.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: warning{{.*}} ignoring invalid debug info
; CHECK-WARN-NOT: Broken module found
; CHECK: foo
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
diff --git a/llvm/test/Verifier/DILocation-parents.ll b/llvm/test/Verifier/DILocation-parents.ll
index 810d0f64c58..3490a5fae3a 100644
--- a/llvm/test/Verifier/DILocation-parents.ll
+++ b/llvm/test/Verifier/DILocation-parents.ll
@@ -1,4 +1,4 @@
-; RUN: not llvm-as %s -o - 2>&1 | FileCheck %s
+; RUN: llvm-as -disable-output %s -o - 2>&1 | FileCheck %s
source_filename = "t.c"
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx10.12.0"
@@ -17,6 +17,8 @@ entry:
ret void, !dbg !9
}
+; CHECK: warning: ignoring invalid debug info
+
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!2, !3}
diff --git a/llvm/test/Verifier/DISubprogram.ll b/llvm/test/Verifier/DISubprogram.ll
index e78220c8bd7..fd23effe9a8 100644
--- a/llvm/test/Verifier/DISubprogram.ll
+++ b/llvm/test/Verifier/DISubprogram.ll
@@ -1,4 +1,4 @@
-; RUN: not opt -S <%s 2>&1| FileCheck %s
+; RUN: llvm-as -disable-output <%s 2>&1| FileCheck %s
define void @f() !dbg !14 {
ret void
@@ -12,6 +12,7 @@ define void @f() !dbg !14 {
!8 = distinct !DICompileUnit(language: DW_LANG_Swift, producer: "clang",
file: !2, emissionKind: 2)
; CHECK: invalid thrown type
+; CHECK: warning: ignoring invalid debug info
!13 = !{!14}
!14 = distinct !DISubprogram(name: "f", scope: !1,
file: !2, line: 1, type: !3, isLocal: true,
diff --git a/llvm/test/Verifier/callsite-dbgloc.ll b/llvm/test/Verifier/callsite-dbgloc.ll
index 2e7473917ec..25fc6cbaab6 100644
--- a/llvm/test/Verifier/callsite-dbgloc.ll
+++ b/llvm/test/Verifier/callsite-dbgloc.ll
@@ -1,4 +1,4 @@
-; RUN: not llvm-as %s -o %t 2>&1 | FileCheck %s
+; RUN: llvm-as %s -o %t 2>&1 | FileCheck %s
; Created and then edited from
; extern void i();
; void h() { i(); }
@@ -39,6 +39,8 @@ entry:
attributes #0 = { nounwind ssp uwtable }
+; CHECK: warning: ignoring invalid debug info
+
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!3, !4, !5}
!llvm.ident = !{!6}
diff --git a/llvm/test/Verifier/dbg-difile-crash.ll b/llvm/test/Verifier/dbg-difile-crash.ll
index 626d1d1edd3..bb57f6128d3 100644
--- a/llvm/test/Verifier/dbg-difile-crash.ll
+++ b/llvm/test/Verifier/dbg-difile-crash.ll
@@ -1,6 +1,6 @@
-; RUN: not llvm-as -disable-output <%s 2>&1 | FileCheck %s
-; CHECK: assembly parsed, but does not verify
-; CHECK-NEXT: invalid file
+; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
+; CHECK: invalid file
+; CHECK: warning: ignoring invalid debug info
define void @blah() !dbg !3 {
ret void
diff --git a/llvm/test/Verifier/dbg-invalid-compileunit.ll b/llvm/test/Verifier/dbg-invalid-compileunit.ll
index 8f8a3d975f7..97b4ee3ce24 100644
--- a/llvm/test/Verifier/dbg-invalid-compileunit.ll
+++ b/llvm/test/Verifier/dbg-invalid-compileunit.ll
@@ -1,5 +1,5 @@
-; RUN: not llvm-as -disable-output <%s 2>&1 | FileCheck %s
-; CHECK: assembly parsed, but does not verify
+; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
+; CHECK: warning: ignoring invalid debug info
!llvm.module.flags = !{!0}
!llvm.dbg.cu = !{!1}
diff --git a/llvm/test/Verifier/dbg-invalid-named-metadata.ll b/llvm/test/Verifier/dbg-invalid-named-metadata.ll
index d31e0da5807..a592e7db4bd 100644
--- a/llvm/test/Verifier/dbg-invalid-named-metadata.ll
+++ b/llvm/test/Verifier/dbg-invalid-named-metadata.ll
@@ -1,5 +1,5 @@
-; RUN: not llvm-as -disable-output <%s 2>&1 | FileCheck %s
-; CHECK: assembly parsed, but does not verify
+; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
+; CHECK: warning: ignoring invalid debug info
!llvm.module.flags = !{!0}
!llvm.dbg.the_dbg_namespace_is_reserved = !{}
diff --git a/llvm/test/Verifier/dbg-invalid-retaintypes.ll b/llvm/test/Verifier/dbg-invalid-retaintypes.ll
index 3bb69a79eb4..87484ba3faa 100644
--- a/llvm/test/Verifier/dbg-invalid-retaintypes.ll
+++ b/llvm/test/Verifier/dbg-invalid-retaintypes.ll
@@ -1,5 +1,5 @@
-; RUN: not llvm-as -disable-output <%s 2>&1 | FileCheck %s
-; CHECK: assembly parsed, but does not verify
+; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
+; CHECK: warning: ignoring invalid debug info
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!3}
diff --git a/llvm/test/Verifier/dbg-line-without-file.ll b/llvm/test/Verifier/dbg-line-without-file.ll
index 4d5725959ef..9cc052911f6 100644
--- a/llvm/test/Verifier/dbg-line-without-file.ll
+++ b/llvm/test/Verifier/dbg-line-without-file.ll
@@ -1,6 +1,6 @@
-; RUN: not llvm-as -disable-output <%s 2>&1 | FileCheck %s
-; CHECK: assembly parsed, but does not verify
+; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
; CHECK: line specified with no file
+; CHECK: warning: ignoring invalid debug info
define void @foo() !dbg !3 {
ret void
diff --git a/llvm/test/Verifier/dbg-null-retained-type.ll b/llvm/test/Verifier/dbg-null-retained-type.ll
index f0368c8c487..1e3565d5ae3 100644
--- a/llvm/test/Verifier/dbg-null-retained-type.ll
+++ b/llvm/test/Verifier/dbg-null-retained-type.ll
@@ -1,6 +1,6 @@
-; RUN: not llvm-as -disable-output <%s 2>&1 | FileCheck %s
-; CHECK: assembly parsed, but does not verify
-; CHECK-NEXT: invalid retained type
+; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
+; CHECK: invalid retained type
+; CHECK: warning: ignoring invalid debug info
!llvm.module.flags = !{!0}
!0 = !{i32 2, !"Debug Info Version", i32 3}
diff --git a/llvm/test/Verifier/dbg.ll b/llvm/test/Verifier/dbg.ll
index d5728a4e827..32c46587070 100644
--- a/llvm/test/Verifier/dbg.ll
+++ b/llvm/test/Verifier/dbg.ll
@@ -1,4 +1,4 @@
-; RUN: not llvm-as -disable-output <%s 2>&1 | FileCheck %s
+; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
define void @foo() {
entry:
@@ -14,6 +14,7 @@ exit:
; CHECK-NEXT: ![[LOC]] = !{}
}
+; CHECK: warning: ignoring invalid debug info
!llvm.module.flags = !{!0}
!0 = !{i32 2, !"Debug Info Version", i32 3}
!1 = distinct !DISubprogram()
diff --git a/llvm/test/Verifier/diglobalvariable.ll b/llvm/test/Verifier/diglobalvariable.ll
index 3b5b79d7f34..cc09c17540d 100644
--- a/llvm/test/Verifier/diglobalvariable.ll
+++ b/llvm/test/Verifier/diglobalvariable.ll
@@ -1,4 +1,4 @@
-; RUN: not opt -S <%s 2>&1| FileCheck %s
+; RUN: llvm-as -disable-output <%s 2>&1| FileCheck %s
; CHECK: !dbg attachment of global variable must be a DIGlobalVariableExpression
@g = common global i32 0, align 4, !dbg !0
@@ -12,3 +12,4 @@
!5 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
!6 = !{i32 2, !"Dwarf Version", i32 4}
!7 = !{i32 2, !"Debug Info Version", i32 3}
+; CHECK: warning: ignoring invalid debug info
diff --git a/llvm/test/Verifier/fnarg-debuginfo.ll b/llvm/test/Verifier/fnarg-debuginfo.ll
index 7cbe9ce93b9..f1072e20722 100644
--- a/llvm/test/Verifier/fnarg-debuginfo.ll
+++ b/llvm/test/Verifier/fnarg-debuginfo.ll
@@ -1,4 +1,4 @@
-; RUN: not llvm-as < %s -o /dev/null 2>&1 | FileCheck %s
+; RUN: llvm-as -disable-output < %s -o /dev/null 2>&1 | FileCheck %s
declare void @llvm.dbg.declare(metadata, metadata, metadata)
declare void @llvm.dbg.value(metadata, i64, metadata, metadata)
@@ -12,6 +12,8 @@ entry:
ret void, !dbg !6
}
+; CHECK: warning: ignoring invalid debug info
+
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!7, !8}
diff --git a/llvm/test/Verifier/fragment.ll b/llvm/test/Verifier/fragment.ll
index ed5df89cb31..45921a4bd14 100644
--- a/llvm/test/Verifier/fragment.ll
+++ b/llvm/test/Verifier/fragment.ll
@@ -1,9 +1,10 @@
-; RUN: not opt -S <%s 2>&1| FileCheck %s
+; RUN: llvm-as -disable-output <%s 2>&1| FileCheck %s
; CHECK: fragment is larger than or outside of variable
; CHECK: !DIGlobalVariableExpression(var: ![[VAR:[0-9]+]],
; CHECK-SAME: expr: !DIExpression(DW_OP_LLVM_fragment, 0, 64))
; CHECK: ![[VAR]] = !DIGlobalVariable(name: "g"
+; CHECK: warning: ignoring invalid debug info
@g = common global i32 0, align 4, !dbg !0
diff --git a/llvm/test/Verifier/func-dbg.ll b/llvm/test/Verifier/func-dbg.ll
index b05d255d82e..e6518a4a41e 100644
--- a/llvm/test/Verifier/func-dbg.ll
+++ b/llvm/test/Verifier/func-dbg.ll
@@ -1,4 +1,4 @@
-; RUN: not llvm-as < %s -o /dev/null 2>&1 | FileCheck %s
+; RUN: llvm-as -disable-output < %s -o /dev/null 2>&1 | FileCheck %s
define i32 @foo() !dbg !4 {
entry:
@@ -11,6 +11,7 @@ entry:
ret i32 0, !dbg !6
}
+; CHECK: warning: ignoring invalid debug info
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!7, !8}
diff --git a/llvm/test/Verifier/llvm.dbg.declare-address.ll b/llvm/test/Verifier/llvm.dbg.declare-address.ll
index 90cf72aea68..219f9ca0a66 100644
--- a/llvm/test/Verifier/llvm.dbg.declare-address.ll
+++ b/llvm/test/Verifier/llvm.dbg.declare-address.ll
@@ -1,7 +1,8 @@
-; RUN: not llvm-as -disable-output <%s 2>&1 | FileCheck %s
+; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
; CHECK: invalid llvm.dbg.declare intrinsic address/value
; CHECK-NEXT: call void @llvm.dbg.declare({{.*}})
; CHECK-NEXT: !""
+; CHECK: warning: ignoring invalid debug info
define void @foo(i32 %a) {
entry:
diff --git a/llvm/test/Verifier/llvm.dbg.declare-expression.ll b/llvm/test/Verifier/llvm.dbg.declare-expression.ll
index 54ee1f750d4..24b1f3ed2b9 100644
--- a/llvm/test/Verifier/llvm.dbg.declare-expression.ll
+++ b/llvm/test/Verifier/llvm.dbg.declare-expression.ll
@@ -1,7 +1,8 @@
-; RUN: not llvm-as -disable-output <%s 2>&1 | FileCheck %s
+; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
; CHECK: invalid llvm.dbg.declare intrinsic expression
; CHECK-NEXT: call void @llvm.dbg.declare({{.*}})
; CHECK-NEXT: !""
+; CHECK: warning: ignoring invalid debug info
define void @foo(i32 %a) {
entry:
diff --git a/llvm/test/Verifier/llvm.dbg.declare-variable.ll b/llvm/test/Verifier/llvm.dbg.declare-variable.ll
index 6f415b7c1fa..a24ed6c9230 100644
--- a/llvm/test/Verifier/llvm.dbg.declare-variable.ll
+++ b/llvm/test/Verifier/llvm.dbg.declare-variable.ll
@@ -1,7 +1,8 @@
-; RUN: not llvm-as -disable-output <%s 2>&1 | FileCheck %s
+; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
; CHECK: invalid llvm.dbg.declare intrinsic variable
; CHECK-NEXT: call void @llvm.dbg.declare({{.*}})
; CHECK-NEXT: !""
+; CHECK: warning: ignoring invalid debug info
define void @foo(i32 %a) {
entry:
diff --git a/llvm/test/Verifier/llvm.dbg.value-expression.ll b/llvm/test/Verifier/llvm.dbg.value-expression.ll
index dd3c29f9107..e1a68c7e82f 100644
--- a/llvm/test/Verifier/llvm.dbg.value-expression.ll
+++ b/llvm/test/Verifier/llvm.dbg.value-expression.ll
@@ -1,7 +1,8 @@
-; RUN: not llvm-as -disable-output <%s 2>&1 | FileCheck %s
+; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
; CHECK: invalid llvm.dbg.value intrinsic expression
; CHECK-NEXT: call void @llvm.dbg.value({{.*}})
; CHECK-NEXT: !""
+; CHECK: warning: ignoring invalid debug info
define void @foo(i32 %a) {
entry:
diff --git a/llvm/test/Verifier/llvm.dbg.value-value.ll b/llvm/test/Verifier/llvm.dbg.value-value.ll
index e1d02de484c..8b0ec1fed05 100644
--- a/llvm/test/Verifier/llvm.dbg.value-value.ll
+++ b/llvm/test/Verifier/llvm.dbg.value-value.ll
@@ -1,7 +1,8 @@
-; RUN: not llvm-as -disable-output <%s 2>&1 | FileCheck %s
+; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
; CHECK: invalid llvm.dbg.value intrinsic address/value
; CHECK-NEXT: call void @llvm.dbg.value({{.*}})
; CHECK-NEXT: !""
+; CHECK: warning: ignoring invalid debug info
define void @foo(i32 %a) {
entry:
diff --git a/llvm/test/Verifier/llvm.dbg.value-variable.ll b/llvm/test/Verifier/llvm.dbg.value-variable.ll
index 745f7ada587..4415956292c 100644
--- a/llvm/test/Verifier/llvm.dbg.value-variable.ll
+++ b/llvm/test/Verifier/llvm.dbg.value-variable.ll
@@ -1,7 +1,8 @@
-; RUN: not llvm-as -disable-output <%s 2>&1 | FileCheck %s
+; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
; CHECK: invalid llvm.dbg.value intrinsic variable
; CHECK-NEXT: call void @llvm.dbg.value({{.*}})
; CHECK-NEXT: !""
+; CHECK: warning: ignoring invalid debug info
define void @foo(i32 %a) {
entry:
diff --git a/llvm/test/Verifier/metadata-function-dbg.ll b/llvm/test/Verifier/metadata-function-dbg.ll
index 6db40943ec3..efef9a447f4 100644
--- a/llvm/test/Verifier/metadata-function-dbg.ll
+++ b/llvm/test/Verifier/metadata-function-dbg.ll
@@ -1,4 +1,4 @@
-; RUN: not llvm-as %s -disable-output 2>&1 | FileCheck %s
+; RUN: llvm-as %s -disable-output 2>&1 | FileCheck %s
; CHECK: function declaration may not have a !dbg attachment
declare !dbg !4 void @f1()
@@ -26,6 +26,7 @@ define void @bar() !dbg !3 {
unreachable
}
+; CHECK: warning: ignoring invalid debug info
!llvm.module.flags = !{!0}
!0 = !{i32 2, !"Debug Info Version", i32 3}
diff --git a/llvm/test/Verifier/pr34325.ll b/llvm/test/Verifier/pr34325.ll
index ae258b7677f..fcc1f0b5300 100644
--- a/llvm/test/Verifier/pr34325.ll
+++ b/llvm/test/Verifier/pr34325.ll
@@ -1,6 +1,7 @@
-; RUN: not opt -verify %s 2>&1 | FileCheck %s
+; RUN: llvm-as -disable-output %s 2>&1 | FileCheck %s
; CHECK: invalid type ref
+; CHECK: warning: ignoring invalid debug info
@bar = global i64 0, align 8, !dbg !0
diff --git a/llvm/test/Verifier/tbaa.ll b/llvm/test/Verifier/tbaa.ll
index 4939da92b13..72404b3088f 100644
--- a/llvm/test/Verifier/tbaa.ll
+++ b/llvm/test/Verifier/tbaa.ll
@@ -1,5 +1,5 @@
; RUN: not llvm-as < %s 2>&1 | FileCheck %s
-; RUN: llvm-as -disable-verify < %s 2>&1 | opt -verify -S | FileCheck %s --check-prefix=STRIP
+; RUN: llvm-as -disable-verify < %s | opt -verify -S | FileCheck %s --check-prefix=STRIP
; STRIP-NOT: tbaa
; STRIP: @f_0
diff --git a/llvm/tools/llvm-as/llvm-as.cpp b/llvm/tools/llvm-as/llvm-as.cpp
index dffe9e6ace3..9f0f162b74f 100644
--- a/llvm/tools/llvm-as/llvm-as.cpp
+++ b/llvm/tools/llvm-as/llvm-as.cpp
@@ -97,7 +97,8 @@ int main(int argc, char **argv) {
// Parse the file now...
SMDiagnostic Err;
- std::unique_ptr<Module> M = parseAssemblyFile(InputFilename, Err, Context);
+ std::unique_ptr<Module> M =
+ parseAssemblyFile(InputFilename, Err, Context, nullptr, !DisableVerify);
if (!M.get()) {
Err.print(argv[0], errs());
return 1;
diff --git a/llvm/tools/opt/opt.cpp b/llvm/tools/opt/opt.cpp
index fd851f240a4..73f89c0e155 100644
--- a/llvm/tools/opt/opt.cpp
+++ b/llvm/tools/opt/opt.cpp
@@ -444,7 +444,8 @@ int main(int argc, char **argv) {
}
// Load the input module...
- std::unique_ptr<Module> M = parseIRFile(InputFilename, Err, Context);
+ std::unique_ptr<Module> M =
+ parseIRFile(InputFilename, Err, Context, !NoVerify);
if (!M) {
Err.print(argv[0], errs());
diff --git a/llvm/unittests/IR/VerifierTest.cpp b/llvm/unittests/IR/VerifierTest.cpp
index f1f453ed5d1..ac94eb102d6 100644
--- a/llvm/unittests/IR/VerifierTest.cpp
+++ b/llvm/unittests/IR/VerifierTest.cpp
@@ -17,7 +17,6 @@
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/LLVMContext.h"
-#include "llvm/IR/LegacyPassManager.h"
#include "llvm/IR/Module.h"
#include "gtest/gtest.h"
@@ -149,7 +148,7 @@ TEST(VerifierTest, InvalidFunctionLinkage) {
"have external or weak linkage!"));
}
-TEST(VerifierTest, StripInvalidDebugInfo) {
+TEST(VerifierTest, DetectInvalidDebugInfo) {
{
LLVMContext C;
Module M("M", C);
@@ -164,13 +163,6 @@ TEST(VerifierTest, StripInvalidDebugInfo) {
NamedMDNode *NMD = M.getOrInsertNamedMetadata("llvm.dbg.cu");
NMD->addOperand(File);
EXPECT_TRUE(verifyModule(M));
-
- ModulePassManager MPM(true);
- MPM.addPass(VerifierPass(false));
- ModuleAnalysisManager MAM(true);
- MAM.registerPass([&] { return VerifierAnalysis(); });
- MPM.run(M, MAM);
- EXPECT_FALSE(verifyModule(M));
}
{
LLVMContext C;
@@ -195,36 +187,8 @@ TEST(VerifierTest, StripInvalidDebugInfo) {
// Now break it by not listing the CU at all.
M.eraseNamedMetadata(M.getOrInsertNamedMetadata("llvm.dbg.cu"));
EXPECT_TRUE(verifyModule(M));
-
- ModulePassManager MPM(true);
- MPM.addPass(VerifierPass(false));
- ModuleAnalysisManager MAM(true);
- MAM.registerPass([&] { return VerifierAnalysis(); });
- MPM.run(M, MAM);
- EXPECT_FALSE(verifyModule(M));
}
}
-TEST(VerifierTest, StripInvalidDebugInfoLegacy) {
- LLVMContext C;
- Module M("M", C);
- DIBuilder DIB(M);
- DIB.createCompileUnit(dwarf::DW_LANG_C89, DIB.createFile("broken.c", "/"),
- "unittest", false, "", 0);
- DIB.finalize();
- EXPECT_FALSE(verifyModule(M));
-
- // Now break it.
- auto *File = DIB.createFile("not-a-CU.f", ".");
- NamedMDNode *NMD = M.getOrInsertNamedMetadata("llvm.dbg.cu");
- NMD->addOperand(File);
- EXPECT_TRUE(verifyModule(M));
-
- legacy::PassManager Passes;
- Passes.add(createVerifierPass(false));
- Passes.run(M);
- EXPECT_FALSE(verifyModule(M));
-}
-
} // end anonymous namespace
} // end namespace llvm
OpenPOWER on IntegriCloud