https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98464
Bug ID: 98464 Summary: [11 Regression] ICE: tree check: expected class 'type', have 'exceptional' (error_mark) in tree_nop_conversion_p, at tree.c:12825 Product: gcc Version: 11.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: asolokha at gmx dot com Target Milestone: --- Created attachment 49847 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49847&action=edit Testcase gcc-11.0.0-alpha20201220 snapshot (g:18e86fae2a14f78e70aae06afce6bb9853068bb1) ICEs when compiling the attached testcase, partially reduced from test/std/containers/sequences/vector/vector.modifiers/insert_iter_rvalue.pass.cpp from the libcxx 11.0.0 testsuite, w/ -O3 -fno-tree-dce: % g++-11.0.0 -O3 -fno-tree-dce -c w93faca0.cpp during GIMPLE pass: fre w93faca0.cpp: In function 'int main()': w93faca0.cpp:144:10: internal compiler error: tree check: expected class 'type', have 'exceptional' (error_mark) in tree_nop_conversion_p, at tree.c:12825 144 | int main() { | ^~~~ 0x807515 tree_class_check_failed(tree_node const*, tree_code_class, char const*, int, char const*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201227/work/gcc-11-20201227/gcc/tree.c:9860 0x80c768 tree_class_check(tree_node const*, tree_code_class, char const*, int, char const*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201227/work/gcc-11-20201227/gcc/tree.h:3717 0x80c768 tree_nop_conversion_p(tree_node const*, tree_node const*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201227/work/gcc-11-20201227/gcc/tree.c:12825 0x16bfdf3 tree_nop_convert(tree_node*, tree_node**) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201227/work/build/gcc/generic-match.c:20 0x16dded3 generic_simplify_MINUS_EXPR /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201227/work/build/gcc/generic-match.c:29343 0xd7e350 fold_binary_loc(unsigned int, tree_code, tree_node*, tree_node*, tree_node*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201227/work/gcc-11-20201227/gcc/fold-const.c:10756 0xd9f504 fold(tree_node*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201227/work/gcc-11-20201227/gcc/fold-const.c:13327 0x122116f simplify_replace_tree(tree_node*, tree_node*, tree_node*, tree_node* (*)(tree_node*, void*), void*, bool) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201227/work/gcc-11-20201227/gcc/tree-ssa-loop-niter.c:1970 0x122116f simplify_replace_tree(tree_node*, tree_node*, tree_node*, tree_node* (*)(tree_node*, void*), void*, bool) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201227/work/gcc-11-20201227/gcc/tree-ssa-loop-niter.c:1970 0x1222167 substitute_in_loop_info(loop*, tree_node*, tree_node*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201227/work/gcc-11-20201227/gcc/tree-ssa-loop-niter.c:4997 0x10fb8b8 replace_uses_by(tree_node*, tree_node*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201227/work/gcc-11-20201227/gcc/tree-cfg.c:2028 0x10fbc0f gimple_merge_blocks /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201227/work/gcc-11-20201227/gcc/tree-cfg.c:2095 0xc26b1f merge_blocks(basic_block_def*, basic_block_def*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201227/work/gcc-11-20201227/gcc/cfghooks.c:803 0x110c691 cleanup_tree_cfg_bb /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201227/work/gcc-11-20201227/gcc/tree-cfgcleanup.c:774 0x110cd58 cleanup_tree_cfg_noloop /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201227/work/gcc-11-20201227/gcc/tree-cfgcleanup.c:1103 0x110cd58 cleanup_tree_cfg(unsigned int) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201227/work/gcc-11-20201227/gcc/tree-cfgcleanup.c:1187 0xfe0534 execute_function_todo /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201227/work/gcc-11-20201227/gcc/passes.c:2008 0xfe0e6b execute_todo /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201227/work/gcc-11-20201227/gcc/passes.c:2096