Skip to content

Commit 10fbbb6

Browse files
authored
[llvm][DebugInfo][ObjC] Make sure we link backing ivars to their DW_TAG_APPLE_property (#165409)
Depends on: * #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 31a0ebb commit 10fbbb6

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
@@ -1120,7 +1120,7 @@ void DwarfUnit::constructTypeDIE(DIE &Buffer, const DICompositeType *CTy) {
11201120
constructMemberDIE(Buffer, DDTy);
11211121
}
11221122
} else if (auto *Property = dyn_cast<DIObjCProperty>(Element)) {
1123-
DIE &ElemDie = createAndAddDIE(Property->getTag(), Buffer);
1123+
DIE &ElemDie = createAndAddDIE(Property->getTag(), Buffer, Property);
11241124
StringRef PropertyName = Property->getName();
11251125
addString(ElemDie, dwarf::DW_AT_APPLE_property_name, PropertyName);
11261126
if (Property->getType())

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

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,49 +5,55 @@
55
; CHECK: DW_TAG_structure_type
66
; CHECK: DW_AT_name ("Foo")
77
;
8-
; CHECK: DW_TAG_APPLE_property
8+
; CHECK: 0x[[AUTO_SYNTH:[0-9a-f]+]]: DW_TAG_APPLE_property
99
; CHECK: DW_AT_APPLE_property_name ("autoSynthProp")
1010
; CHECK: DW_AT_APPLE_property_attribute
1111
; CHECK-SAME: DW_APPLE_PROPERTY_assign, DW_APPLE_PROPERTY_readwrite,
1212
; CHECK-SAME: DW_APPLE_PROPERTY_atomic, DW_APPLE_PROPERTY_unsafe_unretained
1313
;
14-
; CHECK: DW_TAG_APPLE_property
14+
; CHECK: 0x[[SYNTH:[0-9a-f]+]]: DW_TAG_APPLE_property
1515
; CHECK: DW_AT_APPLE_property_name ("synthProp")
1616
; CHECK: DW_AT_APPLE_property_attribute
1717
; CHECK-SAME: DW_APPLE_PROPERTY_assign, DW_APPLE_PROPERTY_readwrite,
1818
; CHECK-SAME: DW_APPLE_PROPERTY_atomic, DW_APPLE_PROPERTY_unsafe_unretained
1919
;
20-
; CHECK: DW_TAG_APPLE_property
20+
; CHECK: 0x[[GET:[0-9a-f]+]]: DW_TAG_APPLE_property
2121
; CHECK: DW_AT_APPLE_property_name ("customGetterProp")
2222
; CHECK: DW_AT_APPLE_property_getter ("customGetter")
2323
; CHECK: DW_AT_APPLE_property_attribute
2424
; CHECK-SAME: DW_APPLE_PROPERTY_getter, DW_APPLE_PROPERTY_assign, DW_APPLE_PROPERTY_readwrite,
2525
; CHECK-SAME: DW_APPLE_PROPERTY_atomic, DW_APPLE_PROPERTY_unsafe_unretained
2626
;
27-
; CHECK: DW_TAG_APPLE_property
27+
; CHECK: 0x[[SET:[0-9a-f]+]]: DW_TAG_APPLE_property
2828
; CHECK: DW_AT_APPLE_property_name ("customSetterProp")
2929
; CHECK: DW_AT_APPLE_property_setter ("customSetter:")
3030
; CHECK: DW_AT_APPLE_property_attribute
3131
; CHECK-SAME: DW_APPLE_PROPERTY_assign, DW_APPLE_PROPERTY_readwrite,
3232
; CHECK-SAME: DW_APPLE_PROPERTY_setter, DW_APPLE_PROPERTY_atomic, DW_APPLE_PROPERTY_unsafe_unretained
3333
;
34-
; CHECK: DW_TAG_APPLE_property
34+
; CHECK: 0x[[ACCESSORS:[0-9a-f]+]]: DW_TAG_APPLE_property
3535
; CHECK: DW_AT_APPLE_property_name ("customAccessorsProp")
3636
; CHECK: DW_AT_APPLE_property_getter ("customGetter")
3737
; CHECK: DW_AT_APPLE_property_setter ("customSetter:")
3838
; CHECK: DW_AT_APPLE_property_attribute
3939
; CHECK-SAME: DW_APPLE_PROPERTY_getter, DW_APPLE_PROPERTY_assign, DW_APPLE_PROPERTY_readwrite,
4040
; CHECK-SAME: DW_APPLE_PROPERTY_setter, DW_APPLE_PROPERTY_atomic, DW_APPLE_PROPERTY_unsafe_unretained
4141
;
42-
; FIXME: missing link between DW_TAG_member and the associated DW_TAG_APPLE_property
4342
; CHECK: DW_TAG_member
44-
; CHECK-NOT: DW_AT_APPLE_property
43+
; CHECK: DW_AT_name ("someBackingIvar")
44+
; CHECK: DW_AT_APPLE_property (0x[[SYNTH]] "synthProp")
45+
;
4546
; CHECK: DW_TAG_member
46-
; CHECK-NOT: DW_AT_APPLE_property
47+
; CHECK: DW_AT_name ("_autoSynthProp")
48+
; CHECK: DW_AT_APPLE_property (0x[[AUTO_SYNTH]] "autoSynthProp")
49+
;
4750
; CHECK: DW_TAG_member
48-
; CHECK-NOT: DW_AT_APPLE_property
51+
; CHECK: DW_AT_name ("_customGetterProp")
52+
; CHECK: DW_AT_APPLE_property (0x[[GET]] "customGetterProp")
53+
;
4954
; CHECK: DW_TAG_member
50-
; CHECK-NOT: DW_AT_APPLE_property
55+
; CHECK: DW_AT_name ("_customSetterProp")
56+
; CHECK: DW_AT_APPLE_property (0x[[SET]] "customSetterProp")
5157

5258
!llvm.module.flags = !{!0, !1}
5359
!llvm.dbg.cu = !{!2}

0 commit comments

Comments
 (0)