https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127382

            Bug ID: 127382
           Summary: [16/17 Regression] ICE in range_of_cond_expr during
                    vectorization with _BitInt
           Product: gcc
           Version: 17.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: shimizu2486 at gmail dot com
  Target Milestone: ---
            Target: x86_64

Live Reproducer: https://godbolt.org/z/sqnGhz5dW

Compiling the following C code with assertion-enabled gcc for x86-64 with -O2
opt level causes ICE:

$ cat t1.c
_BitInt(7) m0[8];
unsigned _BitInt(17) g1;
_BitInt(7) main_p0;
int main_s0_0;
int main(void) {
  main_p0 = g1;
  for (unsigned i = 0; i < 7; i++) {
    _BitInt(65) tt = -(_BitInt(65))(main_s0_0 ? i : g1);
    m0[i & 7] = tt / 10;
  }
}

$ gcc -O2 t1.c
during GIMPLE pass: vect
<source>: In function 'main':
<source>:5:5: internal compiler error: in range_of_cond_expr, at
gimple-range-fold.cc:1513
    5 | int main(void) {
      |     ^~~~
0x2977d88 diagnostics::context::diagnostic_impl(rich_location*,
diagnostics::metadata const*, diagnostics::option_id, char const*,
__va_list_tag (*) [1], diagnostics::kind)
        ???:0
0x296c9cb internal_error(char const*, ...)
        ???:0
0xa76712 fancy_abort(char const*, int, char const*)
        ???:0
0xe803ae fold_using_range::fold_stmt(vrange&, gimple*, fur_source&, tree_node*)
        ???:0
0xe7e585 fold_using_range::range_of_range_op(vrange&, gimple_range_op_handler&,
fur_source&)
        ???:0
0xe7fe0a fold_using_range::fold_stmt(vrange&, gimple*, fur_source&, tree_node*)
        ???:0
0xe6963b gimple_ranger::prefill_stmt_dependencies(tree_node*)
        ???:0
0x283c181 vect_pattern_recog(vec_info*)
        ???:0
0x1577f51 vect_analyze_loop(loop*, gimple*, vec_info_shared*)
        ???:0
/cefs/a3/a3f3254a9e48ec6cc7c0acce_gcc-trunk-20260912/bin/../libexec/gcc/x86_64-linux-gnu/17.0.0/cc1
-quiet -imultiarch x86_64-linux-gnu -iprefix
/cefs/a3/a3f3254a9e48ec6cc7c0acce_gcc-trunk-20260912/bin/../lib/gcc/x86_64-linux-gnu/17.0.0/
<source> -quiet -dumpdir /app/ -dumpbase output.c -dumpbase-ext .c -masm=intel
-mtune=generic -march=x86-64 -g -O2 -fdiagnostics-color=always -fno-verbose-asm
-o /app/output.s
Please submit a full bug report, with preprocessed source (by using
-freport-bug).
Please include the complete backtrace with any bug report.
...


This does not happen on -O0, -O1, -O3, and -Os. Only happens on -O2
Confirmed this ICE happens on 16.3 and current
trunk(83c53762544f1f7db2b0840cff6a957e7ea47a14), but not on 15.3

Tested gcc commit hash: 83c53762544f1f7db2b0840cff6a957e7ea47a14

Reply via email to