[PATCH] D48241: [DebugInfo] Emit ObjC methods as part of interface.

Adrian Prantl via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 15 15:27:45 PDT 2018


aprantl added a comment.

Thanks! Is there also a companion patch for LLVM that disables the objc accelerator table?

Note that this is not a 100% replacement of the apple_objc accelerator table, since the apple_objc table also lists all methods defined in categories of that interface. Is the idea to also add category methods into the interface's DW_TAG_struture_type?



================
Comment at: clang/lib/CodeGen/CGDebugInfo.cpp:3358
+    // Starting with DWARF5, we create declarations for the interface's
+    // methods.
+    if (const auto *OMD = dyn_cast_or_null<ObjCMethodDecl>(D)) {
----------------
`// Starting with DWARF V5 method declarations are emitted as children of the interface type.`


================
Comment at: clang/lib/CodeGen/CGDebugInfo.cpp:4247
+
+      SmallVector<llvm::Metadata *, 16> EltTys;
+      for (auto *E : RealDecl->getElements()) {
----------------
`EltTys.append(RealDecl->getElements().begin(), RealDecl->getElements().end())`


================
Comment at: clang/lib/CodeGen/CGDebugInfo.h:105
+      llvm::DISubprogram *DIMethodDecl;
+      MethodData(const ObjCMethodDecl *MD, llvm::DISubprogram *DIMethodDecl)
+          : MD(MD), DIMethodDecl(DIMethodDecl) {}
----------------
This constructor is probably not necessary if you construct the struct as `{ MD, Decl }`?


================
Comment at: clang/lib/CodeGen/CGDebugInfo.h:111
+    // methods.
+    llvm::DICompositeType *DIInterfaceDecl;
+    std::vector<MethodData> Methods;
----------------
Isn't the interface already the key in the DenseMap?


================
Comment at: clang/test/CodeGenObjC/debug-info-synthesis.m:35
 
+// DWARF5: ![[STRUCT:.*]] = !DICompositeType(tag: DW_TAG_structure_type, name: "Foo"
 // CHECK: ![[FILE:.*]] = !DIFile(filename: "{{[^"]+}}foo.h"
----------------
We should also check that this does not happen in DWARF 4.


Repository:
  rC Clang

https://reviews.llvm.org/D48241





More information about the llvm-commits mailing list