[Bug c++/51322] [C++11] wrong mangling with argument packs

jason at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Jan 6 21:41:00 GMT 2012


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51322

--- Comment #2 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



More information about the Gcc-bugs mailing list