Michael137 added inline comments.
================ Comment at: clang/lib/CodeGen/CGDebugInfo.cpp:2640 if (!D || !D->isCompleteDefinition()) - return FwdDecl; + return {FwdDecl, nullptr}; ---------------- aprantl wrote: > I'm curious if this works if we encounter a forward declaration, early exit > here, then encounter a use of the type, and then the definition, since > completeClass effectively also ignores the preferred name? Good point. If we ever take this branch we won't end up emitting the preferred name. For my `-gmodules` test cases this works out fine because the modules that contain the instantiations would see the preferred name. But I can indeed construct a non-modules test case where we end up using a forward declared structure where the preferred name gets ignored here. Not sure we can do much here for such cases. The alternative I considered where we create some sort of `PreferredNameCache[TagType*] => DIDerivedType` and use it when replacing forward declarations in `finalize()` doesn't work for the normal case because we don't have any forward declarations to replace Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D145803/new/ https://reviews.llvm.org/D145803 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits