[Bug rtl-optimization/126826] New: 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

"zhendong.su at inf dot ethz.ch via Gcc-bugs" <[email protected]>
Newsgroups gmane.comp.gcc.bugs
Message-ID <[email protected]/bugzilla/>
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);
}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.