https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126814
Bug ID: 126814
Summary: [17 Regression] ICE in RTL expand in fill_ranger_cache
at gimple-range-cache.cc:1658 since r17-3171
Product: gcc
Version: 17.0
Status: UNCONFIRMED
Keywords: ice-on-valid-code
Severity: normal
Priority: P3
Component: rtl-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: dhruvc at gcc dot gnu.org
CC: pinskia at gcc dot gnu.org
Target Milestone: ---
Reduced from SPEC2017 blender.
Source:
===
float r;
void use (int);
void
check (int n)
{
for (int j = 0; j < n; j++)
{
int y = (int) __builtin_ceilf (j * r);
if (y >= n)
y = -n;
use (y * 4);
}
}
===
Compile flags: -O2 -funsafe-math-optimizations
Compiler explorer: https://godbolt.org/z/WTc15af65
Backtrace:
===
during RTL pass: expand
<stdin>: In function ‘check’:
<stdin>:12:9: internal compiler error: in fill_block_cache, at
gimple-range-cache.cc:1658
0x267b1e7 internal_error(char const*, ...)
../../gcc/gcc/diagnostic-global-context.cc:787
0x87c44b fancy_abort(char const*, int, char const*)
../../gcc/gcc/diagnostics/context.cc:1813
0xcf9f33 ranger_cache::fill_block_cache(tree_node*, basic_block_def*,
basic_block_def*)
../../gcc/gcc/gimple-range-cache.cc:1658
0xcfa063 ranger_cache::block_range(vrange&, basic_block_def*, tree_node*, bool)
../../gcc/gcc/gimple-range-cache.cc:1397
0xcef3b3 gimple_ranger::range_on_entry(vrange&, basic_block_def*, tree_node*)
../../gcc/gcc/gimple-range.cc:189
0xcef9cf gimple_ranger::range_on_entry(vrange&, basic_block_def*, tree_node*)
../../gcc/gcc/gimple-range.cc:161
0xcef9cf gimple_ranger::range_of_expr(vrange&, tree_node*, gimple*)
../../gcc/gcc/gimple-range.cc:158
0xd0037b fold_using_range::range_of_range_op(vrange&, gimple_range_op_handler&,
fur_source&)
../../gcc/gcc/gimple-range-fold.cc:806
0xd024bb fold_using_range::fold_stmt(vrange&, gimple*, fur_source&, tree_node*)
../../gcc/gcc/gimple-range-fold.cc:698
0xcebfbf gimple_ranger::fold_range_internal(vrange&, gimple*, tree_node*)
../../gcc/gcc/gimple-range.cc:303
0xcebfbf gimple_ranger::prefill_stmt_dependencies(tree_node*)
../../gcc/gcc/gimple-range.cc:494
0xcec8d3 gimple_ranger::range_of_stmt(vrange&, gimple*, tree_node*)
../../gcc/gcc/gimple-range.cc:363
0xcefb5b gimple_ranger::range_of_stmt(vrange&, gimple*, tree_node*)
../../gcc/gcc/gimple-range.cc:315
0xcefb5b gimple_ranger::range_of_expr(vrange&, tree_node*, gimple*)
../../gcc/gcc/gimple-range.cc:124
0xc3e167 tree_single_nonnegative_p(tree_node*, int)
../../gcc/gcc/fold-const.cc:14700
0xc3f79f tree_binary_nonnegative_p(tree_code, tree_node*, tree_node*,
tree_node*, int)
../../gcc/gcc/fold-const.cc:14594
0xcfcf33 fold_using_range::range_of_call(vrange&, gcall*, fur_source&)
../../gcc/gcc/gimple-range-fold.cc:1330
0xd027cb fold_using_range::fold_stmt(vrange&, gimple*, fur_source&, tree_node*)
../../gcc/gcc/gimple-range-fold.cc:702
0xd02dc7 fold_range(vrange&, gimple*, range_query*)
../../gcc/gcc/gimple-range-fold.cc:321
0xcf6b9b ranger_cache::range_of_expr(vrange&, tree_node*, gimple*)
../../gcc/gcc/gimple-range-cache.cc:1341
===