[Bug c++/34102] [4.3 regression] ICE with invalid inheritance of variadic templates

dgregor at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Tue Jan 15 18:51:00 GMT 2008



------- Comment #4 from dgregor at gcc dot gnu dot org  2008-01-15 18:08 -------
Subject: Bug 34102

Author: dgregor
Date: Tue Jan 15 18:08:00 2008
New Revision: 131547

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=131547
Log:
2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>

        PR c++/34051
        PR c++/34055
        PR c++/34102
        PR c++/34103
        * typeck.c (check_return_expr): If there are bare parameter packs
        in the return value, set it to error_mark_node.
        * tree.c (cp_walk_subtrees): Walk USING_DECL nodes.
        * pt.c (find_parameter_packs_r): Look at the type of
        IDENTIFIER_NODEs (e.g., for user-defined conversions).
        (check_for_bare_parameter_packs): Flip the result: now returns
        TRUE when there were bare parameter packs, FALSE otherwise.
        (push_template_decl_real): Deal with flipped result of
        check_for_bare_parameter_packs.
        * semantics.c (finish_cond): If there are bare parameter packs in
        the conditional, set it to error_mark_node.
        (finish_expr_stmt): If there are bare parameter packs in the
        expression, set it to error_mark_node.
        (finish_for_expr): Ditto.
        (finish_switch_cond): If there are bare parameter packs in
        the conditional, set it to error_mark_node.
        (finish_mem_initializers): If there are bare parameter packs in
        the member initializer, set it to error_mark_node.
        (finish_member_declaration): Check the attributes of the
        declaration for bare parameter packs, and remove the attributes if
        any have bare parameter packs.
        * parser.c (cp_parser_using_declaration): Check the using
        declaration for bare parameter packs.
        (cp_parser_base_clause): If there are bare parameter packs in a
        base specifier, don't add it to the chain.

2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>

        PR c++/34051
        PR c++/34055
        PR c++/34102
        PR c++/34103
        * g++.dg/cpp0x/vt-34051-2.C: New.
        * g++.dg/cpp0x/vt-34102.C: New.
        * g++.dg/cpp0x/vt-34051.C: New.
        * g++.dg/cpp0x/vt-34055.C: New.
        * g++.dg/cpp0x/vt-34103.C: New.


Added:
    trunk/gcc/testsuite/g++.dg/cpp0x/vt-34051-2.C
    trunk/gcc/testsuite/g++.dg/cpp0x/vt-34051.C
    trunk/gcc/testsuite/g++.dg/cpp0x/vt-34055.C
    trunk/gcc/testsuite/g++.dg/cpp0x/vt-34102.C
    trunk/gcc/testsuite/g++.dg/cpp0x/vt-34103.C
Modified:
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/parser.c
    trunk/gcc/cp/pt.c
    trunk/gcc/cp/semantics.c
    trunk/gcc/cp/tree.c
    trunk/gcc/cp/typeck.c
    trunk/gcc/testsuite/ChangeLog


-- 


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



More information about the Gcc-bugs mailing list