aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2022-08-24 16:31:04 -0400
committerJason Merrill <jason@redhat.com>2022-08-25 17:03:01 -0400
commit30e160475489867a09ed89532cae135b5849cf98 (patch)
tree74171d5abf8ae88cfbcfc22c102b982786fddbbd
parent980e0aa0ce3bdfec61ca766a71a31a89c12f882e (diff)
downloadgcc-30e160475489867a09ed89532cae135b5849cf98.zip
gcc-30e160475489867a09ed89532cae135b5849cf98.tar.gz
gcc-30e160475489867a09ed89532cae135b5849cf98.tar.bz2
dwarf2: use DW_ATE_UTF for char8_t
While looking at the Rust changes to dwarf2out I noticed that this was missing from the char8_t support. gcc/ChangeLog: * dwarf2out.cc (base_type_die): Also use DW_ATE_UTF for char8_t. gcc/testsuite/ChangeLog: * g++.dg/debug/dwarf2/utf-1.C: New test.
-rw-r--r--gcc/dwarf2out.cc1
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/utf-1.C9
2 files changed, 10 insertions, 0 deletions
diff --git a/gcc/dwarf2out.cc b/gcc/dwarf2out.cc
index e3920c8..28a4ae0 100644
--- a/gcc/dwarf2out.cc
+++ b/gcc/dwarf2out.cc
@@ -13210,6 +13210,7 @@ base_type_die (tree type, bool reverse)
{
const char *name = IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type)));
if (strcmp (name, "char16_t") == 0
+ || strcmp (name, "char8_t") == 0
|| strcmp (name, "char32_t") == 0)
{
encoding = DW_ATE_UTF;
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/utf-1.C b/gcc/testsuite/g++.dg/debug/dwarf2/utf-1.C
new file mode 100644
index 0000000..43b354f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/utf-1.C
@@ -0,0 +1,9 @@
+// { dg-do compile { target c++20 } }
+// { dg-options { -gdwarf -dA } }
+
+// Test that all three use DW_ATE_UTF.
+// { dg-final { scan-assembler-times {DW_AT_encoding \(0x10\)} 3 } }
+
+char8_t c8;
+char16_t c16;
+char32_t c32;