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