[Bug c++/85249] New: [6/7/8 Regression] ICE with invalid default parameter

reichelt at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Apr 6 10:31:00 GMT 2018


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85249

            Bug ID: 85249
           Summary: [6/7/8 Regression] ICE with invalid default parameter
           Product: gcc
           Version: 8.0
            Status: UNCONFIRMED
          Keywords: error-recovery, ice-on-invalid-code
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: reichelt at gcc dot gnu.org
  Target Milestone: ---

The following invalid code snippet triggers an ICE since GCC 4.8.0:

========================================
struct A
{
  void operator= (const A& = A());
  void foo(const A&);
};

void A::foo(const A& = A()) {}
========================================

bug.cc:3:33: error: 'void A::operator=(const A&)' cannot have default arguments
   void operator= (const A& = A());
                                 ^
bug.cc:7:27: internal compiler error: canonical types differ for identical
types 'void (A::)(const A&)' and 'void (A::)(const A&)'
 void A::foo(const A& = A()) {}
                           ^
0x9dc198 comptypes(tree_node*, tree_node*, int)
        ../../gcc/gcc/cp/typeck.c:1480
0x89241a duplicate_decls(tree_node*, tree_node*, bool)
        ../../gcc/gcc/cp/decl.c:2226
0x899062 grokfndecl
        ../../gcc/gcc/cp/decl.c:9099
0x8a95f0 grokdeclarator(cp_declarator const*, cp_decl_specifier_seq*,
decl_context, int, tree_node**)
        ../../gcc/gcc/cp/decl.c:12429
0x8ac476 start_function(cp_decl_specifier_seq*, cp_declarator const*,
tree_node*)
        ../../gcc/gcc/cp/decl.c:15299
0x93c891 cp_parser_function_definition_from_specifiers_and_declarator
        ../../gcc/gcc/cp/parser.c:26711
0x93c891 cp_parser_init_declarator
        ../../gcc/gcc/cp/parser.c:19501
0x944508 cp_parser_simple_declaration
        ../../gcc/gcc/cp/parser.c:13049
0x945318 cp_parser_block_declaration
        ../../gcc/gcc/cp/parser.c:12874
0x9492a2 cp_parser_declaration
        ../../gcc/gcc/cp/parser.c:12772
0x9496b1 cp_parser_declaration_seq_opt
        ../../gcc/gcc/cp/parser.c:12648
0x9499a4 cp_parser_translation_unit
        ../../gcc/gcc/cp/parser.c:4563
0x9499a4 c_parse_file()
        ../../gcc/gcc/cp/parser.c:39016
0xa49636 c_common_parse_file()
        ../../gcc/gcc/c-family/c-opts.c:1132
Please submit a full bug report, [etc.]


More information about the Gcc-bugs mailing list