https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106867
Bug ID: 106867 Summary: [13 Regression] ICE in set, at value-range.cc:372 Product: gcc Version: 13.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: --- gcc 13.0.0 20220904 snapshot (g:20d30e737ad79dc36817e59f1676aa8bc0c6b325) ICEs when compiling the following testcase, reduced from gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-4.c, w/ -O2 -fno-tree-fre: double m; int n; void foo (void) { static double a[] = { 0.0 / 0.0, 0.0 }; int i; for (i = 0; i < n; ++i) if (m >= a[i]) __builtin_abort (); } % gcc-13.0.0 -O2 -fno-tree-fre -c tjdblerc.c during GIMPLE pass: thread tjdblerc.c: In function 'foo': tjdblerc.c:5:1: internal compiler error: in set, at value-range.cc:372 5 | foo (void) | ^~~ 0x7b3cfd frange::set(tree_node*, tree_node*, value_range_kind) /var/tmp/portage/sys-devel/gcc-13.0.0_p20220904/work/gcc-13-20220904/gcc/value-range.cc:372 0x1e4f973 build_le /var/tmp/portage/sys-devel/gcc-13.0.0_p20220904/work/gcc-13-20220904/gcc/range-op-float.cc:240 0x1e4f973 build_lt /var/tmp/portage/sys-devel/gcc-13.0.0_p20220904/work/gcc-13-20220904/gcc/range-op-float.cc:249 0x1e4f973 foperator_le::op2_range(frange&, tree_node*, irange const&, frange const&, relation_kind_t) const /var/tmp/portage/sys-devel/gcc-13.0.0_p20220904/work/gcc-13-20220904/gcc/range-op-float.cc:660 0x1d32e51 gimple_range_calc_op2(vrange&, gimple const*, vrange const&, vrange const&) /var/tmp/portage/sys-devel/gcc-13.0.0_p20220904/work/gcc-13-20220904/gcc/gimple-range-gori.cc:105 0x1d368ca gimple_range_calc_op2(vrange&, gimple const*, vrange const&, vrange const&) /var/tmp/portage/sys-devel/gcc-13.0.0_p20220904/work/gcc-13-20220904/gcc/gimple-range-gori.cc:1143 0x1d368ca gori_compute::compute_operand2_range(vrange&, gimple*, vrange const&, tree_node*, fur_source&) /var/tmp/portage/sys-devel/gcc-13.0.0_p20220904/work/gcc-13-20220904/gcc/gimple-range-gori.cc:1096 0x1d38718 gori_compute::outgoing_edge_range_p(vrange&, edge_def*, tree_node*, range_query&) /var/tmp/portage/sys-devel/gcc-13.0.0_p20220904/work/gcc-13-20220904/gcc/gimple-range-gori.cc:1270 0x10a3455 path_range_query::compute_ranges_in_block(basic_block_def*) /var/tmp/portage/sys-devel/gcc-13.0.0_p20220904/work/gcc-13-20220904/gcc/gimple-range-path.cc:454 0x10a38a1 path_range_query::compute_ranges(bitmap_head const*) /var/tmp/portage/sys-devel/gcc-13.0.0_p20220904/work/gcc-13-20220904/gcc/gimple-range-path.cc:622 0x112bdad back_threader::find_taken_edge_cond(vec<basic_block_def*, va_heap, vl_ptr> const&, gcond*) /var/tmp/portage/sys-devel/gcc-13.0.0_p20220904/work/gcc-13-20220904/gcc/tree-ssa-threadbackward.cc:333 0x112bfb2 back_threader::maybe_register_path(back_threader_profitability&) /var/tmp/portage/sys-devel/gcc-13.0.0_p20220904/work/gcc-13-20220904/gcc/tree-ssa-threadbackward.cc:248 0x112c4c8 back_threader::find_paths_to_names(basic_block_def*, bitmap_head*, unsigned int, back_threader_profitability&) /var/tmp/portage/sys-devel/gcc-13.0.0_p20220904/work/gcc-13-20220904/gcc/tree-ssa-threadbackward.cc:380 0x112ca44 back_threader::find_paths_to_names(basic_block_def*, bitmap_head*, unsigned int, back_threader_profitability&) /var/tmp/portage/sys-devel/gcc-13.0.0_p20220904/work/gcc-13-20220904/gcc/tree-ssa-threadbackward.cc:502 0x112ca44 back_threader::find_paths_to_names(basic_block_def*, bitmap_head*, unsigned int, back_threader_profitability&) /var/tmp/portage/sys-devel/gcc-13.0.0_p20220904/work/gcc-13-20220904/gcc/tree-ssa-threadbackward.cc:502 0x112d4bf back_threader::maybe_thread_block(basic_block_def*) /var/tmp/portage/sys-devel/gcc-13.0.0_p20220904/work/gcc-13-20220904/gcc/tree-ssa-threadbackward.cc:574 0x112d561 back_threader::thread_blocks() /var/tmp/portage/sys-devel/gcc-13.0.0_p20220904/work/gcc-13-20220904/gcc/tree-ssa-threadbackward.cc:1002 0x112d5d3 execute /var/tmp/portage/sys-devel/gcc-13.0.0_p20220904/work/gcc-13-20220904/gcc/tree-ssa-threadbackward.cc:1104