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