mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-09 05:31:19 +00:00
41e546b231
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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@254887 91177308-0d34-0410-b5e6-96231b3b80d8
26 lines
850 B
LLVM
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}
|