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
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits