1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 20:23:11 +01:00
llvm-mirror/test/Verifier/func-dbg.ll
Keno Fischer 0efdadb478 [Verifier] Fix !dbg validation if Scope is the Subprogram
Summary:
We are inserting both Scope and SP into the Seen map and check whether
it was already there in which case we skip the validation (the idea
being that we already checked this Subprogram before). However,
if (Scope == SP) as MDNodes, then inserting the Scope, will trigger
the Seen check causing us to incorrectly not validate this !dbg
attachment. Fix this by not performing the SP Seen check if Scope == SP

Reviewers: pcc, dexonsmith, dblaikie

Subscribers: dblaikie, llvm-commits

Differential Revision: http://reviews.llvm.org/D14697

llvm-svn: 254887
2015-12-06 23:05:38 +00:00

26 lines
850 B
LLVM

; RUN: not llvm-as < %s -o /dev/null 2>&1 | FileCheck %s
define i32 @foo() !dbg !4 {
entry:
ret i32 0, !dbg !6
}
define i32 @bar() !dbg !5 {
entry:
; CHECK: !dbg attachment points at wrong subprogram for function
ret i32 0, !dbg !6
}
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!7, !8}
!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang", isOptimized: false, runtimeVersion: 0, emissionKind: 0, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2)
!1 = !DIFile(filename: "dwarf-test.c", directory: "test")
!2 = !{}
!3 = !{!4, !5}
!4 = distinct !DISubprogram(name: "foo", scope: !0, isDefinition: true)
!5 = distinct !DISubprogram(name: "bar", scope: !0, isDefinition: true)
!6 = !DILocation(line: 7, scope: !4)
!7 = !{i32 2, !"Dwarf Version", i32 3}
!8 = !{i32 1, !"Debug Info Version", i32 3}