Debug Info: Nest Objective-C property function decls inside their container.
authorAdrian Prantl <aprantl@apple.com>
Fri, 8 Nov 2019 17:24:31 +0000 (09:24 -0800)
committerAdrian Prantl <aprantl@apple.com>
Fri, 8 Nov 2019 23:14:00 +0000 (15:14 -0800)
commit901cc4a4bc5257d100338e6c318b96b022d554ee
tree699a3988455df91d6e9ab9d3ab345b747c6f4fe3
parente1b07aac3d1c92f58e05cb5c37c0707842da5839
Debug Info: Nest Objective-C property function decls inside their container.

This has the nice side-effect of also fixing a crash in Clang.

Starting with DWARF 5 we are emitting ObjC method declarations as
children of their containing entity. This worked for interfaces, but
didn't consider the case of synthessized properties. When a property
of a protocol is synthesized in an interface implementation the
ObjCMethodDecl that was passed to CGF::StartFunction was the property
*declaration* which obviously couldn't have a containing
interface. This patch passes the containing interface all the way
through to CGDebugInfo, so the function declaration can be created
with the correct parent (= the class implementing the protocol).

rdar://problem/53782400

Differential Revision: https://reviews.llvm.org/D66121
clang/lib/CodeGen/CGDebugInfo.cpp
clang/lib/CodeGen/CGDebugInfo.h
clang/test/CodeGenObjC/debug-info-objc-property-dwarf5.m [new file with mode: 0644]