mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-11 21:57:55 +00:00
Add the DW_AT_APPLE_runtime_class attribute to forward declarations
as well as completely defined classes. This fixes rdar://10956070 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152171 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
03be3622aa
commit
8938895a83
@ -870,11 +870,6 @@ void CompileUnit::constructTypeDIE(DIE &Buffer, DICompositeType CTy) {
|
||||
if (CTy.isAppleBlockExtension())
|
||||
addUInt(&Buffer, dwarf::DW_AT_APPLE_block, dwarf::DW_FORM_flag, 1);
|
||||
|
||||
unsigned RLang = CTy.getRunTimeLang();
|
||||
if (RLang)
|
||||
addUInt(&Buffer, dwarf::DW_AT_APPLE_runtime_class,
|
||||
dwarf::DW_FORM_data1, RLang);
|
||||
|
||||
DICompositeType ContainingType = CTy.getContainingType();
|
||||
if (DIDescriptor(ContainingType).isCompositeType())
|
||||
addDIEEntry(&Buffer, dwarf::DW_AT_containing_type, dwarf::DW_FORM_ref4,
|
||||
@ -922,6 +917,12 @@ void CompileUnit::constructTypeDIE(DIE &Buffer, DICompositeType CTy) {
|
||||
// Add source line info if available.
|
||||
if (!CTy.isForwardDecl())
|
||||
addSourceLine(&Buffer, CTy);
|
||||
|
||||
// No harm in adding the runtime language to the declaration.
|
||||
unsigned RLang = CTy.getRunTimeLang();
|
||||
if (RLang)
|
||||
addUInt(&Buffer, dwarf::DW_AT_APPLE_runtime_class,
|
||||
dwarf::DW_FORM_data1, RLang);
|
||||
}
|
||||
}
|
||||
|
||||
|
27
test/DebugInfo/objc-fwd-decl.ll
Normal file
27
test/DebugInfo/objc-fwd-decl.ll
Normal file
@ -0,0 +1,27 @@
|
||||
; RUN: llc -mtriple=x86_64-macosx %s -o %t -filetype=obj
|
||||
; RUN: llvm-dwarfdump %t | FileCheck %s
|
||||
|
||||
; CHECK: 0x00000027: DW_TAG_structure_type
|
||||
; CHECK: 0x0000002c: DW_AT_declaration
|
||||
; CHECK: 0x0000002d: DW_AT_APPLE_runtime_class
|
||||
|
||||
%0 = type opaque
|
||||
|
||||
@a = common global %0* null, align 8
|
||||
|
||||
!llvm.dbg.cu = !{!0}
|
||||
!llvm.module.flags = !{!9, !10, !11, !12}
|
||||
|
||||
!0 = metadata !{i32 786449, i32 0, i32 16, metadata !"foo.m", metadata !"/Users/echristo", metadata !"clang version 3.1 (trunk 152054 trunk 152094)", i1 true, i1 false, metadata !"", i32 2, metadata !1, metadata !1, metadata !1, metadata !3} ; [ DW_TAG_compile_unit ]
|
||||
!1 = metadata !{metadata !2}
|
||||
!2 = metadata !{i32 0}
|
||||
!3 = metadata !{metadata !4}
|
||||
!4 = metadata !{metadata !5}
|
||||
!5 = metadata !{i32 786484, i32 0, null, metadata !"a", metadata !"a", metadata !"", metadata !6, i32 3, metadata !7, i32 0, i32 1, %0** @a} ; [ DW_TAG_variable ]
|
||||
!6 = metadata !{i32 786473, metadata !"foo.m", metadata !"/Users/echristo", null} ; [ DW_TAG_file_type ]
|
||||
!7 = metadata !{i32 786447, null, metadata !"", null, i32 0, i64 64, i64 64, i64 0, i32 0, metadata !8} ; [ DW_TAG_pointer_type ]
|
||||
!8 = metadata !{i32 786451, null, metadata !"FooBarBaz", metadata !6, i32 1, i32 0, i32 0, i32 0, i32 4, null, null, i32 16} ; [ DW_TAG_structure_type ]
|
||||
!9 = metadata !{i32 1, metadata !"Objective-C Version", i32 2}
|
||||
!10 = metadata !{i32 1, metadata !"Objective-C Image Info Version", i32 0}
|
||||
!11 = metadata !{i32 1, metadata !"Objective-C Image Info Section", metadata !"__DATA, __objc_imageinfo, regular, no_dead_strip"}
|
||||
!12 = metadata !{i32 4, metadata !"Objective-C Garbage Collection", i32 0}
|
Loading…
Reference in New Issue
Block a user