diff --git a/llvm/test/BugPoint/invalid-debuginfo.ll b/llvm/test/BugPoint/invalid-debuginfo.ll new file mode 100644 index 000000000000..91b01493d1f9 --- /dev/null +++ b/llvm/test/BugPoint/invalid-debuginfo.ll @@ -0,0 +1,22 @@ +; RUN: bugpoint -load %llvmshlibdir/BugpointPasses%shlibext %s -output-prefix %t -bugpoint-crash-too-many-cus -silence-passes 2>&1 | FileCheck %s +; REQUIRES: loadable_module +; CHECK: All DICompileUnits must be listed in llvm.dbg.cu + +; When bugpoint hacks at this testcase it will at one point create illegal IR +; that won't even pass the Verifier. A bugpoint *driver* built with assertions +; should not assert on it, but reject the malformed intermediate step. +define void @f() !dbg !9 { ret void } +!llvm.dbg.cu = !{!0, !1, !2, !3, !4, !5} +!0 = distinct !DICompileUnit(language: 12, file: !6) +!1 = distinct !DICompileUnit(language: 12, file: !6) +!2 = distinct !DICompileUnit(language: 12, file: !6) +!3 = distinct !DICompileUnit(language: 12, file: !6) +!4 = distinct !DICompileUnit(language: 12, file: !6) +!5 = distinct !DICompileUnit(language: 12, file: !6) +!6 = !DIFile(filename: "path/to/file", directory: "/path/to/dir") + +!llvm.module.flags = !{!7, !8} +!7 = !{i32 2, !"Dwarf Version", i32 4} +!8 = !{i32 2, !"Debug Info Version", i32 3} + +!9 = distinct !DISubprogram(unit: !0) diff --git a/llvm/tools/bugpoint/CrashDebugger.cpp b/llvm/tools/bugpoint/CrashDebugger.cpp index cdbf57f90e89..a472fff0975e 100644 --- a/llvm/tools/bugpoint/CrashDebugger.cpp +++ b/llvm/tools/bugpoint/CrashDebugger.cpp @@ -733,7 +733,7 @@ bool ReduceCrashingInstructions::TestInsts( // Verify that this is still valid. legacy::PassManager Passes; - Passes.add(createVerifierPass()); + Passes.add(createVerifierPass(/*FatalErrors=*/false)); Passes.run(*M); // Try running on the hacked up program... @@ -809,7 +809,7 @@ bool ReduceCrashingNamedMD::TestNamedMDs(std::vector &NamedMDs) { // Verify that this is still valid. legacy::PassManager Passes; - Passes.add(createVerifierPass()); + Passes.add(createVerifierPass(/*FatalErrors=*/false)); Passes.run(*M); // Try running on the hacked up program... @@ -876,7 +876,7 @@ bool ReduceCrashingNamedMDOps::TestNamedMDOps( // Verify that this is still valid. legacy::PassManager Passes; - Passes.add(createVerifierPass()); + Passes.add(createVerifierPass(/*FatalErrors=*/false)); Passes.run(*M); // Try running on the hacked up program...