https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126826
Bug ID: 126826
Summary: ICE on valid code at -O3 with
"-fno-tree-dominator-opts -fno-tree-vrp
-fno-tree-builtin-call-dce" on x86_64-linux-gnu: in
propagate_updated_value, at gimple-range-cache.cc:1509
Product: gcc
Version: 16.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: rtl-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: zhendong.su at inf dot ethz.ch
Target Milestone: ---
Compiler Explorer: https://godbolt.org/z/x4M7jY91W
Note:
- fails: trunk
- works: 16.2 and earlier
[567] % gcctk -v
Using built-in specs.
COLLECT_GCC=gcctk
COLLECT_LTO_WRAPPER=/local/home/suz/suz-local/software/local/gcc-trunk/bin/../libexec/gcc/x86_64-pc-linux-gnu/17.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../gcc-trunk/configure --disable-bootstrap
--enable-checking=yes --prefix=/local/suz-local/software/local/gcc-trunk
--enable-sanitizers --enable-languages=c,c++,lto --disable-werror
--disable-multilib
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 17.0.0 20260812 (experimental) [master r17-1628-gd1c12591336] (GCC)
[568] %
[568] % gcctk -O3 -fno-tree-dominator-opts -fno-tree-vrp
-fno-tree-builtin-call-dce small.c
during RTL pass: expand
small.c: In function âfâ:
small.c:8:13: internal compiler error: in propagate_updated_value, at
gimple-range-cache.cc:1509
8 | b = p - 1;
| ~~^~~
0x27c95ab internal_error(char const*, ...)
../../gcc-trunk/gcc/diagnostic-global-context.cc:787
0xa2dc61 fancy_abort(char const*, int, char const*)
../../gcc-trunk/gcc/diagnostics/context.cc:1813
0x8447df ranger_cache::propagate_updated_value(tree_node*, basic_block_def*)
../../gcc-trunk/gcc/gimple-range-cache.cc:1509
0xe2b98e ranger_cache::set_global_range(tree_node*, vrange const&, bool)
../../gcc-trunk/gcc/gimple-range-cache.cc:1213
0xe20a0b gimple_ranger::range_of_stmt(vrange&, gimple*, tree_node*)
../../gcc-trunk/gcc/gimple-range.cc:373
0xe23d23 gimple_ranger::range_of_stmt(vrange&, gimple*, tree_node*)
../../gcc-trunk/gcc/gimple-range.cc:315
0xe23d23 gimple_ranger::range_of_expr(vrange&, tree_node*, gimple*)
../../gcc-trunk/gcc/gimple-range.cc:124
0xd89522 tree_single_nonnegative_p(tree_node*, int)
../../gcc-trunk/gcc/fold-const.cc:14700
0xe3073b fold_using_range::range_of_call(vrange&, gcall*, fur_source&)
../../gcc-trunk/gcc/gimple-range-fold.cc:1330
0xe36248 fold_using_range::fold_stmt(vrange&, gimple*, fur_source&, tree_node*)
../../gcc-trunk/gcc/gimple-range-fold.cc:702
0xe3690c fold_range(vrange&, gimple*, range_query*)
../../gcc-trunk/gcc/gimple-range-fold.cc:321
0xe2a2da ranger_cache::range_of_expr(vrange&, tree_node*, gimple*)
../../gcc-trunk/gcc/gimple-range-cache.cc:1341
0xe3b080 gori_compute::compute_operand1_range(vrange&,
gimple_range_op_handler&, vrange const&, fur_source&, value_relation*)
../../gcc-trunk/gcc/gimple-range-gori.cc:1175
0xe3d596 gori_compute::compute_operand_range(vrange&, gimple*, vrange const&,
tree_node*, fur_source&, value_relation*)
../../gcc-trunk/gcc/gimple-range-gori.cc:776
0xe3d166 gori_compute::compute_operand_range(vrange&, gimple*, vrange const&,
tree_node*, fur_source&, value_relation*)
../../gcc-trunk/gcc/gimple-range-gori.cc:791
0xe3f3aa gori_compute::edge_range_p(vrange&, edge_def*, tree_node*,
range_query&)
../../gcc-trunk/gcc/gimple-range-gori.cc:1443
0xe2a0a8 ranger_cache::edge_range(vrange&, edge_def*, tree_node*,
ranger_cache::rfd_mode)
../../gcc-trunk/gcc/gimple-range-cache.cc:1317
0xe2b03d ranger_cache::propagate_cache(tree_node*)
../../gcc-trunk/gcc/gimple-range-cache.cc:1442
0xe2cdcb ranger_cache::fill_block_cache(tree_node*, basic_block_def*,
basic_block_def*)
../../gcc-trunk/gcc/gimple-range-cache.cc:1737
0xe2d8b7 ranger_cache::block_range(vrange&, basic_block_def*, tree_node*, bool)
../../gcc-trunk/gcc/gimple-range-cache.cc:1397
/local/home/suz/suz-local/software/local/gcc-trunk/bin/../libexec/gcc/x86_64-pc-linux-gnu/17.0.0/cc1
-quiet -I /usr/local/include -I /local/suz-local/software/local/include
-imultiarch x86_64-linux-gnu -iprefix
/local/home/suz/suz-local/software/local/gcc-trunk/bin/../lib/gcc/x86_64-pc-linux-gnu/17.0.0/
small.c -quiet -dumpdir a- -dumpbase small.c -dumpbase-ext .c -mtune=generic
-march=x86-64 -O3 -fno-tree-dominator-opts -fno-tree-vrp
-fno-tree-builtin-call-dce -o /tmp/ccQISvgQ.s
Please submit a full bug report, with preprocessed source (by using
-freport-bug).
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
[569] %
[569] % cat small.c
double fmod(double, double);
int a, b, c;
double d, *e;
void f(short p) {
e = &d;
do {
if (a)
b = p - 1;
d = b;
*e = fmod(d, d) + d;
} while (d ? d : c);
}