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



Jonathan Wakely <redi at gcc dot gnu.org> changed:



           What    |Removed                     |Added

----------------------------------------------------------------------------

           Keywords|                            |ice-on-valid-code

             Status|UNCONFIRMED                 |NEW

   Last reconfirmed|                            |2013-04-25

            Summary|GCC claims a friend         |[4.9 Regression] GCC claims

                   |function to be overloaded,  |a friend function to be

                   |but it isn't                |overloaded, but it isn't

     Ever Confirmed|0                           |1



--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> 2013-04-25 
11:20:33 UTC ---

ICE confirmed with trunk, which is a regression:



ice.c: In instantiation of 'struct b<rp>':

ice.c:16:11:   required from here

ice.c:8:17: internal compiler error: canonical types differ for identical types

b<P> and b<FriendP>

     friend void f(b<FriendP> from);

                 ^

0x64861b comptypes

        ../../gcc-4.9/gcc/cp/typeck.c:1395

0x64861b comptypes

        ../../gcc-4.9/gcc/cp/typeck.c:1369

0x649b33 compparms(tree_node const*, tree_node const*)

        ../../gcc-4.9/gcc/cp/typeck.c:1501

0x54526b decls_match(tree_node*, tree_node*)

        ../../gcc-4.9/gcc/cp/decl.c:1026

0x545cc4 duplicate_decls(tree_node*, tree_node*, bool)

        ../../gcc-4.9/gcc/cp/decl.c:1241

0x6e9801 push_overloaded_decl_1

        ../../gcc-4.9/gcc/cp/name-lookup.c:2288

0x6e9801 push_overloaded_decl

        ../../gcc-4.9/gcc/cp/name-lookup.c:2383

0x6eb1ed pushdecl_maybe_friend_1

        ../../gcc-4.9/gcc/cp/name-lookup.c:885

0x6eb1ed pushdecl_maybe_friend(tree_node*, bool)

        ../../gcc-4.9/gcc/cp/name-lookup.c:1219

0x6eca79 pushdecl_with_scope_1

        ../../gcc-4.9/gcc/cp/name-lookup.c:2206

0x6ed7ab pushdecl_with_scope(tree_node*, cp_binding_level*, bool)

        ../../gcc-4.9/gcc/cp/name-lookup.c:2220

0x6ed86d pushdecl_namespace_level(tree_node*, bool)

        ../../gcc-4.9/gcc/cp/name-lookup.c:3761

0x5b9e69 tsubst_friend_function

        ../../gcc-4.9/gcc/cp/pt.c:8137

0x5bb493 instantiate_class_template_1

        ../../gcc-4.9/gcc/cp/pt.c:8997

0x5bb493 instantiate_class_template(tree_node*)

        ../../gcc-4.9/gcc/cp/pt.c:9081

0x6439bb complete_type

        ../../gcc-4.9/gcc/cp/typeck.c:131

0x6439bb complete_type

        ../../gcc-4.9/gcc/cp/typeck.c:105

0x534f27 start_decl_1(tree_node*, bool)

        ../../gcc-4.9/gcc/cp/decl.c:4666

0x558990 start_decl(cp_declarator const*, cp_decl_specifier_seq*, int,

tree_node*, tree_node*, tree_node**)

        ../../gcc-4.9/gcc/cp/decl.c:4629

0x618430 cp_parser_init_declarator

        ../../gcc-4.9/gcc/cp/parser.c:16138







4.6, 4.7 and 4.8 reject it, which is better than an ICE but possibly still

wrong.

Reply via email to