https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99116
Bug ID: 99116 Summary: [11 Regression] ICE in set_identifier_type_value_with_scope, at cp/name-lookup.c:4764 Product: gcc Version: 11.0 Status: UNCONFIRMED Keywords: ice-on-invalid-code Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: asolokha at gmx dot com Target Milestone: --- g++-11.0.0-alpha20210214 snapshot (g:9966699d7a9d8e35c0c4cf9a945bcf90ef874f2d) ICEs when compiling the following testcase, reduced from test/CXX/temp/temp.res/temp.local/p6.cpp from the clang 11.0.1 test suite: template<int T> struct Z { template<typename T> struct A {}; friend struct T; }; % g++-11.0.0 -c rzrmc2qs.c rzrmc2qs.c:2:12: error: declaration of template parameter 'T' shadows template parameter 2 | template<typename T> struct A {}; | ^~~~~~~~ rzrmc2qs.c:1:10: note: template parameter 'T' declared here 1 | template<int T> struct Z { | ^~~ rzrmc2qs.c:4:17: error: declaration of 'struct T' shadows template parameter 4 | friend struct T; | ^ rzrmc2qs.c:1:10: note: template parameter 'T' declared here 1 | template<int T> struct Z { | ^~~ rzrmc2qs.c:4:17: internal compiler error: in set_identifier_type_value_with_scope, at cp/name-lookup.c:4764 4 | friend struct T; | ^ 0x67ea81 set_identifier_type_value_with_scope /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210214/work/gcc-11-20210214/gcc/cp/name-lookup.c:4764 0xa23af9 do_pushdecl /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210214/work/gcc-11-20210214/gcc/cp/name-lookup.c:3817 0xa24561 do_pushdecl /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210214/work/gcc-11-20210214/gcc/cp/name-lookup.c:4850 0xa24561 do_pushdecl_with_scope /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210214/work/gcc-11-20210214/gcc/cp/name-lookup.c:4850 0xa24b15 do_pushtag /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210214/work/gcc-11-20210214/gcc/cp/name-lookup.c:8282 0xa24b15 pushtag(tree_node*, tree_node*, TAG_how) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210214/work/gcc-11-20210214/gcc/cp/name-lookup.c:8342 0x9614d0 xref_tag(tag_types, tree_node*, TAG_how, bool) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210214/work/gcc-11-20210214/gcc/cp/decl.c:15323 0xa60c10 cp_parser_elaborated_type_specifier /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210214/work/gcc-11-20210214/gcc/cp/parser.c:19644 0xa455b5 cp_parser_type_specifier /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210214/work/gcc-11-20210214/gcc/cp/parser.c:18398 0xa46644 cp_parser_decl_specifier_seq /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210214/work/gcc-11-20210214/gcc/cp/parser.c:14994 0xa7304e cp_parser_member_declaration /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210214/work/gcc-11-20210214/gcc/cp/parser.c:25874 0xa43120 cp_parser_member_specification_opt /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210214/work/gcc-11-20210214/gcc/cp/parser.c:25731 0xa43120 cp_parser_class_specifier_1 /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210214/work/gcc-11-20210214/gcc/cp/parser.c:24809 0xa4568b cp_parser_class_specifier /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210214/work/gcc-11-20210214/gcc/cp/parser.c:25125 0xa4568b cp_parser_type_specifier /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210214/work/gcc-11-20210214/gcc/cp/parser.c:18372 0xa46644 cp_parser_decl_specifier_seq /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210214/work/gcc-11-20210214/gcc/cp/parser.c:14994 0xa71a79 cp_parser_single_declaration /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210214/work/gcc-11-20210214/gcc/cp/parser.c:30343 0xa71e25 cp_parser_template_declaration_after_parameters /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210214/work/gcc-11-20210214/gcc/cp/parser.c:30006 0xa725f0 cp_parser_explicit_template_declaration /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210214/work/gcc-11-20210214/gcc/cp/parser.c:30272 0xa74e81 cp_parser_declaration /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210214/work/gcc-11-20210214/gcc/cp/parser.c:14000