https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94475
Bug ID: 94475
Summary: [10 Regression] ICE: tree check: expected class
'type', have 'exceptional' (error_mark) in
element_mode, at tree.c:13813
Product: gcc
Version: 10.0
Status: UNCONFIRMED
Keywords: error-recovery, 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++-10.0.1-alpha20200329 snapshot (g:60c254b279e8e8443b8ad26cc46b9e4084cff66c)
ICEs when compiling the following testcase, extracted from
test/std/numerics/bit/bitops.rot/rotr.pass.cpp from the libcxx 10.0.0 test
suite:
unsigned char
sr ()
{
const unsigned char xz = EI;
return xz - (xz >> 1);
}
% g++-10.0.1 -c ayrzmymn.cpp
ayrzmymn.cpp: In function 'unsigned char sr()':
ayrzmymn.cpp:4:28: error: 'EI' was not declared in this scope
4 | const unsigned char xz = EI;
| ^~
ayrzmymn.cpp:6:23: internal compiler error: tree check: expected class 'type',
have 'exceptional' (error_mark) in element_mode, at tree.c:13813
6 | return xz - (xz >> 1);
| ^
0x7bb6b4 tree_class_check_failed(tree_node const*, tree_code_class, char
const*, int, char const*)
/var/tmp/portage/sys-devel/gcc-10.0.1_alpha20200329/work/gcc-10-20200329/gcc/tree.c:9787
0x7c101b tree_class_check(tree_node const*, tree_code_class, char const*, int,
char const*)
/var/tmp/portage/sys-devel/gcc-10.0.1_alpha20200329/work/gcc-10-20200329/gcc/tree.h:3657
0x7c101b element_mode(tree_node const*)
/var/tmp/portage/sys-devel/gcc-10.0.1_alpha20200329/work/gcc-10-20200329/gcc/tree.c:13813
0xcaacef fold_binary_loc(unsigned int, tree_code, tree_node*, tree_node*,
tree_node*)
/var/tmp/portage/sys-devel/gcc-10.0.1_alpha20200329/work/gcc-10-20200329/gcc/fold-const.c:10795
0xcb3749 fold_build2_loc(unsigned int, tree_code, tree_node*, tree_node*,
tree_node*)
/var/tmp/portage/sys-devel/gcc-10.0.1_alpha20200329/work/gcc-10-20200329/gcc/fold-const.c:13157
0xb95872 do_narrow
/var/tmp/portage/sys-devel/gcc-10.0.1_alpha20200329/work/gcc-10-20200329/gcc/convert.c:439
0xb98936 convert_to_integer_1
/var/tmp/portage/sys-devel/gcc-10.0.1_alpha20200329/work/gcc-10-20200329/gcc/convert.c:844
0xb99848 convert_to_integer_maybe_fold(tree_node*, tree_node*, bool)
/var/tmp/portage/sys-devel/gcc-10.0.1_alpha20200329/work/gcc-10-20200329/gcc/convert.c:980
0x8d735d ocp_convert(tree_node*, tree_node*, int, int, int)
/var/tmp/portage/sys-devel/gcc-10.0.1_alpha20200329/work/gcc-10-20200329/gcc/cp/cvt.c:874
0x8d007d cp_fold
/var/tmp/portage/sys-devel/gcc-10.0.1_alpha20200329/work/gcc-10-20200329/gcc/cp/cp-gimplify.c:2494
0x8d110c cp_fold_maybe_rvalue(tree_node*, bool)
/var/tmp/portage/sys-devel/gcc-10.0.1_alpha20200329/work/gcc-10-20200329/gcc/cp/cp-gimplify.c:2330
0xa79958 maybe_warn_about_returning_address_of_local
/var/tmp/portage/sys-devel/gcc-10.0.1_alpha20200329/work/gcc-10-20200329/gcc/cp/typeck.c:9480
0xa79958 check_return_expr(tree_node*, bool*)
/var/tmp/portage/sys-devel/gcc-10.0.1_alpha20200329/work/gcc-10-20200329/gcc/cp/typeck.c:10089
0xa2c2bf finish_return_stmt(tree_node*)
/var/tmp/portage/sys-devel/gcc-10.0.1_alpha20200329/work/gcc-10-20200329/gcc/cp/semantics.c:955
0x99b0d0 cp_parser_jump_statement
/var/tmp/portage/sys-devel/gcc-10.0.1_alpha20200329/work/gcc-10-20200329/gcc/cp/parser.c:13111
0x99b0d0 cp_parser_statement
/var/tmp/portage/sys-devel/gcc-10.0.1_alpha20200329/work/gcc-10-20200329/gcc/cp/parser.c:11362
0x99c4d8 cp_parser_statement_seq_opt
/var/tmp/portage/sys-devel/gcc-10.0.1_alpha20200329/work/gcc-10-20200329/gcc/cp/parser.c:11835
0x99c5b8 cp_parser_compound_statement
/var/tmp/portage/sys-devel/gcc-10.0.1_alpha20200329/work/gcc-10-20200329/gcc/cp/parser.c:11785
0x9b4855 cp_parser_function_body
/var/tmp/portage/sys-devel/gcc-10.0.1_alpha20200329/work/gcc-10-20200329/gcc/cp/parser.c:23062
0x9b4855 cp_parser_ctor_initializer_opt_and_function_body
/var/tmp/portage/sys-devel/gcc-10.0.1_alpha20200329/work/gcc-10-20200329/gcc/cp/parser.c:23113