diff options
author | Jason Merrill <jason@redhat.com> | 2008-10-06 18:29:42 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2008-10-06 18:29:42 -0400 |
commit | 38179091cc37de50c92d821b3670e94943d41bfc (patch) | |
tree | bc6ed12ab486e9243fadc7deb1fa88cc3d721bdf /gcc/cp/operators.def | |
parent | ecbeb53b5654ccc6efdbdbdb47ef6e29271bb120 (diff) | |
download | gcc-38179091cc37de50c92d821b3670e94943d41bfc.zip gcc-38179091cc37de50c92d821b3670e94943d41bfc.tar.gz gcc-38179091cc37de50c92d821b3670e94943d41bfc.tar.bz2 |
PR c++/37376, other mangling issues
gcc/cp/:
PR c++/37376, other mangling issues
* mangle.c (write_type): Update TYPE_PACK_EXPANSION mangling.
(write_member_name): Break out from...
(write_expression): ...here. Handle dependent COMPONENT_REF.
(write_template_arg): Wrap an argument pack in 'I'/'E'.
(write_builtin_type): Update char16/32_t mangling.
(write_nested_name, write_prefix): Don't forget template args
for typename types.
* operators.def: Add ARROW_EXPR, update COMPONENT_REF and
EXPR_PACK_EXPANSION.
libstdc++-v3/:
* config/abi/pre/gnu.ver: Update char16/32_t manglings.
include/:
* demangle.h (enum demangle_component_type): Add
DEMANGLE_COMPONENT_PACK_EXPANSION.
libiberty/:
* cp-demangle.c (struct d_print_info): Add pack_index.
(d_dump): Add DEMANGLE_COMPONENT_PACK_EXPANSION.
(d_make_comp): Likewise. DEMANGLE_COMPONENT_ARGLIST and
DEMANGLE_COMPONENT_TEMPLATE_ARGLIST can have two null args.
(cplus_demangle_builtin_types): Add char16/32_t.
(cplus_demangle_type): Recognize them.
(d_template_args): Handle empty argument packs.
(d_template_arg): Handle argument packs.
(d_expression): Handle dependent name.
(d_index_template_argument): New fn.
(d_lookup_template_argument): New fn.
(d_find_pack, d_pack_length): New fn.
(d_print_subexpr): Split out...
(d_print_comp): ...from here. Use d_*_template_argument.
Handle empty arg lists. Support pack expansions.
* cp-demangle.h (D_BUILTIN_TYPE_COUNT): Increase to 32.
From-SVN: r140916
Diffstat (limited to 'gcc/cp/operators.def')
-rw-r--r-- | gcc/cp/operators.def | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/cp/operators.def b/gcc/cp/operators.def index 9c2dd8b..20c74d8 100644 --- a/gcc/cp/operators.def +++ b/gcc/cp/operators.def @@ -125,7 +125,8 @@ DEF_SIMPLE_OPERATOR ("&&", TRUTH_ANDIF_EXPR, "aa", 2) DEF_SIMPLE_OPERATOR ("||", TRUTH_ORIF_EXPR, "oo", 2) DEF_SIMPLE_OPERATOR (",", COMPOUND_EXPR, "cm", 2) DEF_SIMPLE_OPERATOR ("->*", MEMBER_REF, "pm", 2) -DEF_SIMPLE_OPERATOR ("->", COMPONENT_REF, "pt", 2) +DEF_SIMPLE_OPERATOR ("->", ARROW_EXPR, "pt", 2) +DEF_SIMPLE_OPERATOR (".", COMPONENT_REF, "dt", 2) DEF_SIMPLE_OPERATOR ("[]", ARRAY_REF, "ix", 2) DEF_SIMPLE_OPERATOR ("++", POSTINCREMENT_EXPR, "pp", 2) DEF_SIMPLE_OPERATOR ("--", POSTDECREMENT_EXPR, "mm", 2) @@ -152,4 +153,4 @@ DEF_SIMPLE_OPERATOR ("?:", COND_EXPR, "qu", 3) DEF_SIMPLE_OPERATOR ("()", CALL_EXPR, "cl", -1) /* Variadic templates extension. */ -DEF_SIMPLE_OPERATOR ("...", EXPR_PACK_EXPANSION, "pu", 1) +DEF_SIMPLE_OPERATOR ("...", EXPR_PACK_EXPANSION, "sp", 1) |