[Bug rtl-optimization/126814] New: [17 Regression] ICE in RTL expand in fill_ranger_cache at gimple-range-cache.cc:1658 since r17-3171

"dhruvc at gcc dot gnu.org via Gcc-bugs" <[email protected]>
Newsgroups gmane.comp.gcc.bugs
Message-ID <[email protected]/bugzilla/>
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
===
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.