http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50855
--- Comment #4 from Jason Merrill <jason at gcc dot gnu.org> 2012-01-06 21:39:51 UTC --- Author: jason Date: Fri Jan 6 21:39:43 2012 New Revision: 182970 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=182970 Log: PR c++/6057 PR c++/48051 PR c++/50855 PR c++/51322 gcc/cp/ * mangle.c (write_expression): Support NEW_EXPR, DELETE_EXPR, THROW_EXPR, CONSTRUCTOR, OVERLOAD. Fix PREINCREMENT_EXPR and PREDECREMENT_EXPR. (write_template_arg): Fix mangling of class-scope functions and argument packs. (mangle_decl): Update suggested -fabi-version argument. * operators.def: Add DOTSTAR_EXPR, REINTERPRET_CAST_EXPR, DYNAMIC_CAST_EXPR; correct CONST_CAST_EXPR, STATIC_CAST_EXPR. * tree.c (dependent_name): No longer static. * cp-tree.h: Declare it. * pt.c (unify): Defer handling of unconverted functions. include/ * demangle.h (enum demangle_component_type): Add DEMANGLE_COMPONENT_INITIALIZER_LIST, DEMANGLE_COMPONENT_NULLARY. libiberty/ * cp-demangle.c (d_dump): Handle DEMANGLE_COMPONENT_NULLARY and DEMANGLE_COMPONENT_INITIALIZER_LIST. (d_make_comp): Likewise. Allow null right arg for DEMANGLE_COMPONENT_TRINARY_ARG2. (cplus_demangle_operators): Adjust new/delete; add .*, :: and throw. (d_template_args, d_template_arg): Handle 'J' for argument packs. (d_exprlist): Add terminator parm. (d_expression, d_print_comp): Handle initializer lists, nullary expressions, prefix/suffix operators, and new. (d_print_subexpr): Avoid parens around DEMANGLE_COMPONENT_QUAL_NAME and DEMANGLE_COMPONENT_INITIALIZER_LIST. * testsuite/demangle-expected: Add tests. Added: trunk/gcc/testsuite/g++.dg/abi/mangle51.C trunk/gcc/testsuite/g++.dg/abi/mangle52.C trunk/gcc/testsuite/g++.dg/abi/mangle53.C trunk/gcc/testsuite/g++.dg/abi/mangle54.C trunk/gcc/testsuite/g++.dg/abi/mangle55.C trunk/gcc/testsuite/g++.dg/abi/mangle56.C trunk/gcc/testsuite/g++.dg/abi/mangle57.C trunk/gcc/testsuite/g++.dg/abi/mangle58.C trunk/gcc/testsuite/g++.dg/abi/mangle59.C Modified: trunk/gcc/common.opt trunk/gcc/cp/ChangeLog trunk/gcc/cp/cp-tree.h trunk/gcc/cp/mangle.c trunk/gcc/cp/operators.def trunk/gcc/cp/pt.c trunk/gcc/cp/tree.c trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/g++.dg/cpp0x/trailing3.C trunk/gcc/testsuite/g++.dg/cpp0x/variadic111.C trunk/gcc/testsuite/g++.dg/cpp0x/variadic4.C trunk/gcc/testsuite/g++.dg/cpp0x/variadic42.C trunk/gcc/testsuite/g++.dg/template/nontype22.C trunk/gcc/testsuite/g++.dg/template/pr35240.C trunk/include/ChangeLog trunk/include/demangle.h trunk/libiberty/ChangeLog trunk/libiberty/cp-demangle.c trunk/libiberty/testsuite/demangle-expected trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/testsuite/abi/demangle/regression/cw-16.cc