[cherry-pick][swift/release/5.9] [clang][DebugInfo] Emit DW_AT_type of preferred name if available #6612
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
With this patch, whenever we emit a
DW_AT_type
for some declarationand the type is a template class with a
clang::PreferredNameAttr
, wewill emit the typedef that the attribute refers to instead. I.e.,
...becomes
We do this by returning the preferred name typedef
DIType
whenwe create a structure definition. In some cases, e.g., with
-gmodules
,we don't complete the structure definition immediately but do so later
via
completeClassData
, which overwrites theTypeCache
. In such caseswe don't actually want to rewrite the cache with the preferred name. We
handle this by returning both the definition and the preferred typedef
from
CreateTypeDefinition
and let the callee decide what to do withit.
Essentially we set up the types as:
For now we keep this behind LLDB tuning.
Testing
check-llvm
,check-clang
passbasic_string
references in some of my test programs.Differential Revision: https://reviews.llvm.org/D145803