https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101741
Bug ID: 101741 Summary: [12 Regression] ICE in fold_stmt, at gimple-range-fold.cc:541 Product: gcc Version: 12.0 Status: UNCONFIRMED Keywords: ice-checking, ice-on-invalid-code Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: asolokha at gmx dot com Target Milestone: --- gcc-12.0.0-alpha20210801 snapshot (g:6f0c43e97825ee54e3779afbedcd0def12443001) ICEs when compiling the following testcase w/ -O1: int foo (void); unsigned int toupper (int c) { c = foo (); while (c) c = toupper (c); return c; } % gcc-12.0.0 -O1 -c kfqwhatr.c during GIMPLE pass: dom kfqwhatr.c: In function 'toupper': kfqwhatr.c:5:1: internal compiler error: in fold_stmt, at gimple-range-fold.cc:541 5 | toupper (int c) | ^~~~~~~ 0x7d2d8a fold_using_range::fold_stmt(irange&, gimple*, fur_source&, tree_node*) /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210801/work/gcc-12-20210801/gcc/gimple-range-fold.cc:541 0x18e1b7e fold_range(irange&, gimple*, range_query*) /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210801/work/gcc-12-20210801/gcc/gimple-range-fold.cc:317 0x11ad8c5 vr_values::extract_range_basic(value_range_equiv*, gimple*) /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210801/work/gcc-12-20210801/gcc/vr-values.c:1234 0x18ea7e5 evrp_range_analyzer::record_ranges_from_stmt(gimple*, bool) /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210801/work/gcc-12-20210801/gcc/gimple-ssa-evrp-analyze.c:308 0x1066e80 jt_state::record_ranges_from_stmt(gimple*, bool) /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210801/work/gcc-12-20210801/gcc/tree-ssa-threadedge.c:1391 0x1066e80 jump_threader::record_temporary_equivalences_from_stmts_at_dest(edge_def*) /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210801/work/gcc-12-20210801/gcc/tree-ssa-threadedge.c:269 0x1067501 jump_threader::thread_through_normal_block(vec<jump_thread_edge*, va_heap, vl_ptr>*, edge_def*, bitmap_head*) /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210801/work/gcc-12-20210801/gcc/tree-ssa-threadedge.c:977 0x1068600 jump_threader::thread_through_normal_block(vec<jump_thread_edge*, va_heap, vl_ptr>*, edge_def*, bitmap_head*) /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210801/work/gcc-12-20210801/gcc/tree-ssa-threadedge.c:1262 0x1068600 jump_threader::thread_across_edge(edge_def*) /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210801/work/gcc-12-20210801/gcc/tree-ssa-threadedge.c:1150 0xf6eba4 dom_opt_dom_walker::after_dom_children(basic_block_def*) /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210801/work/gcc-12-20210801/gcc/tree-ssa-dom.c:1473 0x18ab16a dom_walker::walk(basic_block_def*) /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210801/work/gcc-12-20210801/gcc/domwalk.c:352 0xf70acb execute /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210801/work/gcc-12-20210801/gcc/tree-ssa-dom.c:764