diff options
author | Orlando Cazalet-Hyams <orlando.hyams@sony.com> | 2024-04-18 12:08:31 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-18 12:08:31 +0100 |
commit | 8d6a9c05f6d676c93c84ebf06cf6263657e74c00 (patch) | |
tree | 5c05aaba0b42913a5d8e12479236948593ccb2c4 /llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp | |
parent | 3da065896b1b59fd8291958e8d13f4a942d51214 (diff) | |
download | llvm-8d6a9c05f6d676c93c84ebf06cf6263657e74c00.zip llvm-8d6a9c05f6d676c93c84ebf06cf6263657e74c00.tar.gz llvm-8d6a9c05f6d676c93c84ebf06cf6263657e74c00.tar.bz2 |
[DWARF] Add support for DW_TAG_template_alias for template aliases (#88943)
Part 1 of fix for issue
https://github.com/llvm/llvm-project/issues/54624
Split from PR #87623. Clang front end changes to follow.
Use DICompositeType to represent the template alias, using its extraData
field as a tuple of DITemplateParameter to describe the template
parameters.
Added template-alias.ll - Check DWARF emission.
Modified frame-types.s - Check llvm-symbolizer understands the DIE.
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp')
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp b/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp index f00ff15..24cd1b1 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp @@ -154,7 +154,8 @@ uint64_t DebugHandlerBase::getBaseTypeSize(const DIType *Ty) { if (Tag != dwarf::DW_TAG_member && Tag != dwarf::DW_TAG_typedef && Tag != dwarf::DW_TAG_const_type && Tag != dwarf::DW_TAG_volatile_type && Tag != dwarf::DW_TAG_restrict_type && Tag != dwarf::DW_TAG_atomic_type && - Tag != dwarf::DW_TAG_immutable_type) + Tag != dwarf::DW_TAG_immutable_type && + Tag != dwarf::DW_TAG_template_alias) return DDTy->getSizeInBits(); DIType *BaseType = DDTy->getBaseType(); @@ -210,7 +211,8 @@ bool DebugHandlerBase::isUnsignedDIType(const DIType *Ty) { assert(T == dwarf::DW_TAG_typedef || T == dwarf::DW_TAG_const_type || T == dwarf::DW_TAG_volatile_type || T == dwarf::DW_TAG_restrict_type || T == dwarf::DW_TAG_atomic_type || - T == dwarf::DW_TAG_immutable_type); + T == dwarf::DW_TAG_immutable_type || + T == dwarf::DW_TAG_template_alias); assert(DTy->getBaseType() && "Expected valid base type"); return isUnsignedDIType(DTy->getBaseType()); } |