https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85067
Bug ID: 85067 Summary: [8 Regression] ICE with volatile parameter in defaulted copy-constructor 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 on trunk: ================================== template<int> struct A { A(); A(volatile A&) = default; }; struct B { A<0> a; }; B b; ================================== bug.cc: In instantiation of 'struct A<0>': bug.cc:9:8: required from here bug.cc:4:3: error: defaulted declaration 'A<<anonymous> >::A(volatile A<<anonymous> >&) [with int <anonymous> = 0]' does not match the expected signature A(volatile A&) = default; ^ bug.cc:4:3: note: expected signature: 'constexpr A<0>::A(A<0>&)' bug.cc:12:3: internal compiler error: in implicitly_declare_fn, at cp/method.c:2059 B b; ^ 0x61e3ab implicitly_declare_fn(special_function_kind, tree_node*, bool, tree_node*, tree_node*) ../../gcc/gcc/cp/method.c:2059 0x8f5e63 lazily_declare_fn(special_function_kind, tree_node*) ../../gcc/gcc/cp/method.c:2392 0x8fd544 get_class_binding(tree_node*, tree_node*, int) ../../gcc/gcc/cp/name-lookup.c:1297 0x9a2625 lookup_field_r ../../gcc/gcc/cp/search.c:977 0x9a178d dfs_walk_all(tree_node*, tree_node* (*)(tree_node*, void*), tree_node* (*)(tree_node*, void*), void*) ../../gcc/gcc/cp/search.c:1410 0x9a1972 lookup_member(tree_node*, tree_node*, int, bool, int, access_failure_info*) ../../gcc/gcc/cp/search.c:1134 0x9a1c53 lookup_fnfields(tree_node*, tree_node*, int) ../../gcc/gcc/cp/search.c:1329 0x823c91 build_special_member_call(tree_node*, tree_node*, vec<tree_node*, va_gc, vl_embed>**, tree_node*, int, int) ../../gcc/gcc/cp/call.c:8932 0x8d2923 expand_default_init ../../gcc/gcc/cp/init.c:1892 0x8d2923 expand_aggr_init_1 ../../gcc/gcc/cp/init.c:2007 0x8d3289 build_aggr_init(tree_node*, tree_node*, int, int) ../../gcc/gcc/cp/init.c:1747 0x887ddf build_aggr_init_full_exprs ../../gcc/gcc/cp/decl.c:6273 0x887ddf check_initializer ../../gcc/gcc/cp/decl.c:6422 0x89fbdc cp_finish_decl(tree_node*, tree_node*, bool, tree_node*, int) ../../gcc/gcc/cp/decl.c:7127 0x93c2eb cp_parser_init_declarator ../../gcc/gcc/cp/parser.c:19741 0x943758 cp_parser_simple_declaration ../../gcc/gcc/cp/parser.c:13059 0x944568 cp_parser_block_declaration ../../gcc/gcc/cp/parser.c:12884 0x9484c2 cp_parser_declaration ../../gcc/gcc/cp/parser.c:12782 0x9488d1 cp_parser_declaration_seq_opt ../../gcc/gcc/cp/parser.c:12658 0x948bc4 cp_parser_translation_unit ../../gcc/gcc/cp/parser.c:4563 Please submit a full bug report, [etc.] The regression was introduced between 2017-09-26 and 2017-10-07.