Skip to content

Commit e361a62

Browse files
committed
[llvm][DebugInfo][ObjC] Make sure we link backing ivars to their DW_TAG_APPLE_property
Depends on: * llvm#165373 When an Objective-C property has a backing ivar, we would previously not add a `DW_AT_APPLE_property` to the ivar's `DW_TAG_member`. This is what was intended based on the [Objective-C DebugInfo docs](https://github.com/llvm/llvm-project/blob/main/llvm/docs/SourceLevelDebugging.rst#proposal) but is not what LLVM currently generates. LLDB currently doesn't ever try linking the `ObjCPropertyDecl`s to their `ObjCIvarDecl`s, but if we wanted to, this debug-info patch is a pre-requisite.
1 parent d62c93f commit e361a62

File tree

2 files changed

+17
-11
lines changed

2 files changed

+17
-11
lines changed

llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1109,7 +1109,7 @@ void DwarfUnit::constructTypeDIE(DIE &Buffer, const DICompositeType *CTy) {
11091109
constructMemberDIE(Buffer, DDTy);
11101110
}
11111111
} else if (auto *Property = dyn_cast<DIObjCProperty>(Element)) {
1112-
DIE &ElemDie = createAndAddDIE(Property->getTag(), Buffer);
1112+
DIE &ElemDie = createAndAddDIE(Property->getTag(), Buffer, Property);
11131113
StringRef PropertyName = Property->getName();
11141114
addString(ElemDie, dwarf::DW_AT_APPLE_property_name, PropertyName);
11151115
if (Property->getType())

llvm/test/DebugInfo/Generic/objc-property.ll

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,50 +3,56 @@
33
; CHECK: DW_TAG_structure_type
44
; CHECK: DW_AT_name ("Foo")
55
;
6-
; CHECK: DW_TAG_APPLE_property
6+
; CHECK: 0x[[AUTO_SYNTH:[0-9a-f]+]]: DW_TAG_APPLE_property
77
; CHECK: DW_AT_APPLE_property_name ("autoSynthProp")
88
; CHECK: DW_AT_APPLE_property_attribute
99
; CHECK-SAME: DW_APPLE_PROPERTY_assign, DW_APPLE_PROPERTY_readwrite,
1010
; CHECK-SAME: DW_APPLE_PROPERTY_atomic, DW_APPLE_PROPERTY_unsafe_unretained
1111
;
12-
; CHECK: DW_TAG_APPLE_property
12+
; CHECK: 0x[[SYNTH:[0-9a-f]+]]: DW_TAG_APPLE_property
1313
; CHECK: DW_AT_APPLE_property_name ("synthProp")
1414
; CHECK: DW_AT_APPLE_property_attribute
1515
; CHECK-SAME: DW_APPLE_PROPERTY_assign, DW_APPLE_PROPERTY_readwrite,
1616
; CHECK-SAME: DW_APPLE_PROPERTY_atomic, DW_APPLE_PROPERTY_unsafe_unretained
1717
;
1818
; FIXME: this should have a DW_AT_APPLE_property_getter tag
19-
; CHECK: DW_TAG_APPLE_property
19+
; CHECK: 0x[[GET:[0-9a-f]+]]: DW_TAG_APPLE_property
2020
; CHECK: DW_AT_APPLE_property_name ("customGetterProp")
2121
; CHECK: DW_AT_APPLE_property_setter ("customGetter")
2222
; CHECK: DW_AT_APPLE_property_attribute
2323
; CHECK-SAME: DW_APPLE_PROPERTY_getter, DW_APPLE_PROPERTY_assign, DW_APPLE_PROPERTY_readwrite,
2424
; CHECK-SAME: DW_APPLE_PROPERTY_atomic, DW_APPLE_PROPERTY_unsafe_unretained
2525
;
26-
; CHECK: DW_TAG_APPLE_property
26+
; CHECK: 0x[[SET:[0-9a-f]+]]: DW_TAG_APPLE_property
2727
; CHECK: DW_AT_APPLE_property_name ("customSetterProp")
2828
; CHECK: DW_AT_APPLE_property_setter ("customSetter:")
2929
; CHECK: DW_AT_APPLE_property_attribute
3030
; CHECK-SAME: DW_APPLE_PROPERTY_assign, DW_APPLE_PROPERTY_readwrite,
3131
; CHECK-SAME: DW_APPLE_PROPERTY_setter, DW_APPLE_PROPERTY_atomic, DW_APPLE_PROPERTY_unsafe_unretained
3232
;
33-
; CHECK: DW_TAG_APPLE_property
33+
; CHECK: 0x[[ACCESSORS:[0-9a-f]+]]: DW_TAG_APPLE_property
3434
; CHECK: DW_AT_APPLE_property_name ("customAccessorsProp")
3535
; CHECK: DW_AT_APPLE_property_getter ("customGetter")
3636
; CHECK: DW_AT_APPLE_property_setter ("customSetter:")
3737
; CHECK: DW_AT_APPLE_property_attribute
3838
; CHECK-SAME: DW_APPLE_PROPERTY_getter, DW_APPLE_PROPERTY_assign, DW_APPLE_PROPERTY_readwrite,
3939
; CHECK-SAME: DW_APPLE_PROPERTY_setter, DW_APPLE_PROPERTY_atomic, DW_APPLE_PROPERTY_unsafe_unretained
4040
;
41-
; FIXME: missing link between DW_TAG_member and the associated DW_TAG_APPLE_property
4241
; CHECK: DW_TAG_member
43-
; CHECK-NOT: DW_AT_APPLE_property
42+
; CHECK: DW_AT_name ("someBackingIvar")
43+
; CHECK: DW_AT_APPLE_property (0x[[SYNTH]])
44+
;
4445
; CHECK: DW_TAG_member
45-
; CHECK-NOT: DW_AT_APPLE_property
46+
; CHECK: DW_AT_name ("_autoSynthProp")
47+
; CHECK: DW_AT_APPLE_property (0x[[AUTO_SYNTH]])
48+
;
4649
; CHECK: DW_TAG_member
47-
; CHECK-NOT: DW_AT_APPLE_property
50+
; CHECK: DW_AT_name ("_customGetterProp")
51+
; CHECK: DW_AT_APPLE_property (0x[[GET]])
52+
;
4853
; CHECK: DW_TAG_member
49-
; CHECK-NOT: DW_AT_APPLE_property
54+
; CHECK: DW_AT_name ("_customSetterProp")
55+
; CHECK: DW_AT_APPLE_property (0x[[SET]])
5056

5157
!llvm.module.flags = !{!7, !8}
5258
!llvm.dbg.cu = !{!13}

0 commit comments

Comments
 (0)