]> git.ipfire.org Git - thirdparty/gcc.git/commit
c++, demangle: Implement https://github.com/itanium-cxx-abi/cxx-abi/issues/148 non...
authorJakub Jelinek <jakub@redhat.com>
Sat, 13 Jan 2024 09:23:53 +0000 (10:23 +0100)
committerJakub Jelinek <jakub@redhat.com>
Sat, 13 Jan 2024 09:23:53 +0000 (10:23 +0100)
commit65388b28656d65595bdaf191df85af81c35ca638
tree60a1fbdd28b8418a75b4e508a4a3a429ba7149d1
parent34a827039fabcf24ce78da25984a1cc8be7ca2c3
c++, demangle: Implement https://github.com/itanium-cxx-abi/cxx-abi/issues/148 non-proposal

The following patch attempts to implement what apparently clang++
implemented for explicit object member function mangling, but nobody
actually proposed in patch form in
https://github.com/itanium-cxx-abi/cxx-abi/issues/148

2024-01-13  Jakub Jelinek  <jakub@redhat.com>

gcc/cp/
* mangle.cc (write_nested_name): Mangle explicit object
member functions with H as per
https://github.com/itanium-cxx-abi/cxx-abi/issues/148 non-proposal.
gcc/testsuite/
* g++.dg/abi/mangle79.C: New test.
include/
* demangle.h (enum demangle_component_type): Add
DEMANGLE_COMPONENT_XOBJ_MEMBER_FUNCTION.
libiberty/
* cp-demangle.c (FNQUAL_COMPONENT_CASE): Add case for
DEMANGLE_COMPONENT_XOBJ_MEMBER_FUNCTION.
(d_dump): Handle DEMANGLE_COMPONENT_XOBJ_MEMBER_FUNCTION.
(d_nested_name): Parse H after N in nested name.
(d_count_templates_scopes): Handle
DEMANGLE_COMPONENT_XOBJ_MEMBER_FUNCTION.
(d_print_mod): Likewise.
(d_print_function_type): Likewise.
* testsuite/demangle-expected: Add tests for explicit object
member functions.
gcc/cp/mangle.cc
gcc/testsuite/g++.dg/abi/mangle79.C [new file with mode: 0644]
include/demangle.h
libiberty/cp-demangle.c
libiberty/testsuite/demangle-expected