https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108647
Bug ID: 108647 Summary: [13 Regression] ICE in upper_bound, at value-range.h:950 with -O3 Product: gcc Version: 13.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskiy at gmail dot com Target Milestone: --- Link to the Compiler Explorer: https://godbolt.org/z/PMGTPGPab Reproducer: bool a; int b, c; inline const bool &d(bool &e, const bool &f) { return f < e ? f : e; } void g(char e, bool f[], bool h[], bool p4[]) { for (;;) if (p4) for (char j = 0; j < 6; j += (f[0] & c ? p4[0] : int(0 >= e)) ? 0 : d(p4[0], p4[0] > h[0]) + 1) { a = 0; b = 0; } } Error: >$ g++ -O3 -c func.cpp during GIMPLE pass: thread func.cpp: In function 'void g(char, bool*, bool*, bool*)': func.cpp:4:6: internal compiler error: in upper_bound, at value-range.h:950 4 | void g(char e, bool f[], bool h[], bool p4[]) { | ^ 0x995922 irange::upper_bound() const /testing/gcc/gcc_src_master/gcc/value-range.h:950 0x9961f0 irange::upper_bound() const /testing/gcc/gcc_src_master/gcc/tree.h:3653 0x9961f0 operator_lt::op2_range(irange&, tree_node*, irange const&, irange const&, relation_trio) const /testing/gcc/gcc_src_master/gcc/range-op.cc:952 0x20cc69f gori_compute::refine_using_relation(tree_node*, vrange&, tree_node*, vrange&, fur_source&, relation_kind_t) /testing/gcc/gcc_src_master/gcc/gimple-range-gori.cc:1034 0x20ce404 gori_compute::compute_operand1_range(vrange&, gimple_range_op_handler&, vrange const&, tree_node*, fur_source&, value_relation*) /testing/gcc/gcc_src_master/gcc/gimple-range-gori.cc:1092 0x20cd0e5 gori_compute::compute_operand_range(vrange&, gimple*, vrange const&, tree_node*, fur_source&, value_relation*) /testing/gcc/gcc_src_master/gcc/gimple-range-gori.cc:700 0x20d0ad8 gori_compute::outgoing_edge_range_p(vrange&, edge_def*, tree_node*, range_query&) /testing/gcc/gcc_src_master/gcc/gimple-range-gori.cc:1358 0x141362d path_range_query::compute_ranges_in_block(basic_block_def*) /testing/gcc/gcc_src_master/gcc/gimple-range-path.cc:454 0x1413d3a path_range_query::compute_ranges(bitmap_head const*) /testing/gcc/gcc_src_master/gcc/gimple-range-path.cc:622 0x149cd3a back_threader::find_taken_edge_cond(vec<basic_block_def*, va_heap, vl_ptr> const&, gcond*) /testing/gcc/gcc_src_master/gcc/tree-ssa-threadbackward.cc:324 0x149cf33 back_threader::maybe_register_path(back_threader_profitability&) /testing/gcc/gcc_src_master/gcc/tree-ssa-threadbackward.cc:248 0x149d2d0 back_threader::find_paths_to_names(basic_block_def*, bitmap_head*, unsigned int, back_threader_profitability&) /testing/gcc/gcc_src_master/gcc/tree-ssa-threadbackward.cc:371 0x149d789 back_threader::find_paths_to_names(basic_block_def*, bitmap_head*, unsigned int, back_threader_profitability&) /testing/gcc/gcc_src_master/gcc/tree-ssa-threadbackward.cc:479 0x149d789 back_threader::find_paths_to_names(basic_block_def*, bitmap_head*, unsigned int, back_threader_profitability&) /testing/gcc/gcc_src_master/gcc/tree-ssa-threadbackward.cc:479 0x149d789 back_threader::find_paths_to_names(basic_block_def*, bitmap_head*, unsigned int, back_threader_profitability&) /testing/gcc/gcc_src_master/gcc/tree-ssa-threadbackward.cc:479 0x149d789 back_threader::find_paths_to_names(basic_block_def*, bitmap_head*, unsigned int, back_threader_profitability&) /testing/gcc/gcc_src_master/gcc/tree-ssa-threadbackward.cc:479 0x149e258 back_threader::maybe_thread_block(basic_block_def*) /testing/gcc/gcc_src_master/gcc/tree-ssa-threadbackward.cc:551 0x149e321 back_threader::thread_blocks() /testing/gcc/gcc_src_master/gcc/tree-ssa-threadbackward.cc:975 0x149e398 execute /testing/gcc/gcc_src_master/gcc/tree-ssa-threadbackward.cc:1077 gcc version 13.0.1 20230201 (a2c848c92c3f13c2dd9bd92d22beb44c1ff848b4)