From 999e617d3121b82921c8031ee695fd036f553f04 Mon Sep 17 00:00:00 2001 From: Patrick Palka Date: Sat, 3 Jun 2023 09:03:27 -0400 Subject: c++: mangle noexcept-expr [PR70790] This implements noexcept(expr) mangling and demangling as per the Itanium ABI. PR c++/70790 gcc/cp/ChangeLog: * mangle.cc (write_expression): Handle NOEXCEPT_EXPR. libiberty/ChangeLog: * cp-demangle.c (cplus_demangle_operators): Add the noexcept operator. (d_print_comp_inner) : Always print parens around the operand of noexcept too. * testsuite/demangle-expected: Test noexcept operator demangling. gcc/testsuite/ChangeLog: * g++.dg/abi/mangle78.C: New test. --- gcc/cp/mangle.cc | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'gcc/cp') diff --git a/gcc/cp/mangle.cc b/gcc/cp/mangle.cc index 826c5e7..7dab4e6 100644 --- a/gcc/cp/mangle.cc +++ b/gcc/cp/mangle.cc @@ -3402,6 +3402,11 @@ write_expression (tree expr) else write_string ("tr"); } + else if (code == NOEXCEPT_EXPR) + { + write_string ("nx"); + write_expression (TREE_OPERAND (expr, 0)); + } else if (code == CONSTRUCTOR) { bool braced_init = BRACE_ENCLOSED_INITIALIZER_P (expr); -- cgit v1.1