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 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits