aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp
diff options
context:
space:
mode:
authorOrlando Cazalet-Hyams <orlando.hyams@sony.com>2024-04-18 12:08:31 +0100
committerGitHub <noreply@github.com>2024-04-18 12:08:31 +0100
commit8d6a9c05f6d676c93c84ebf06cf6263657e74c00 (patch)
tree5c05aaba0b42913a5d8e12479236948593ccb2c4 /llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp
parent3da065896b1b59fd8291958e8d13f4a942d51214 (diff)
downloadllvm-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.cpp6
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());
}