diff options
-rw-r--r-- | llvm/lib/IR/Verifier.cpp | 2 | ||||
-rw-r--r-- | llvm/test/DebugInfo/Generic/invalid.ll | 17 |
2 files changed, 17 insertions, 2 deletions
diff --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp index 9c2da10c9e1..c14e2bbdee4 100644 --- a/llvm/lib/IR/Verifier.cpp +++ b/llvm/lib/IR/Verifier.cpp @@ -2119,8 +2119,6 @@ void Verifier::visitFunction(const Function &F) { if (!N) return; - visitDISubprogram(*N); - // Check that all !dbg attachments lead to back to N (or, at least, another // subprogram that describes the same function). // diff --git a/llvm/test/DebugInfo/Generic/invalid.ll b/llvm/test/DebugInfo/Generic/invalid.ll new file mode 100644 index 00000000000..fdb68d9cca3 --- /dev/null +++ b/llvm/test/DebugInfo/Generic/invalid.ll @@ -0,0 +1,17 @@ +; RUN: not opt -verify %s 2>&1 | FileCheck %s + +; Make sure we emit this diagnostic only once (which means we don't visit the +; same DISubprogram twice. +; CHECK: subprogram definitions must have a compile unit +; 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) + +define void @tinkywinky() !dbg !3 { ret void } + +!llvm.module.flags = !{!4} +!llvm.dbg.cu = !{!0} +!0 = distinct !DICompileUnit(language: 12, file: !1) +!1 = !DIFile(filename: "/home/davide", directory: "/home/davide") +!3 = distinct !DISubprogram(name: "patatino", isDefinition: true) +!4 = !{i32 2, !"Debug Info Version", i32 3} |