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

            Bug ID: 124891
           Summary: [16 Regression] internal compiler error on trunk with
                    -O3: tree check: expected ssa_name, have integer_cst
                    in expand_simple_operations, at
                    tree-ssa-loop-niter.cc:2885
           Product: gcc
           Version: 16.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: lu.maltsis at postgrad dot manchester.ac.uk
  Target Milestone: ---

```bash
$ gcc -O3 -freport-bug bug.c
during GIMPLE pass: lversion
bug.c: In function ‘f’:
bug.c:1:6: internal compiler error: tree check: expected ssa_name, have
integer_cst in expand_simple_operations, at tree-ssa-loop-niter.cc:2885
    1 | void f(int x, int y, int z, int *buf)
      |      ^
0x253a17b internal_error(char const*, ...)
        /home/user/software/gcc/src/gcc/diagnostic-global-context.cc:787
0x8ce794 tree_check_failed(tree_node const*, char const*, int, char const*,
...)
        /home/user/software/gcc/src/gcc/tree.cc:9219
0x89d3fa tree_check(tree_node*, char const*, int, char const*, tree_code)
        /home/user/software/gcc/src/gcc/tree.h:3780
0x89d3fa expand_simple_operations
        /home/user/software/gcc/src/gcc/tree-ssa-loop-niter.cc:2885
0x1334069 expand_simple_operations(tree_node*, tree_node*)
        /home/user/software/gcc/src/gcc/tree-ssa-loop-niter.cc:2949
0x1338f10 refine_value_range_using_guard
        /home/user/software/gcc/src/gcc/tree-ssa-loop-niter.cc:196
0x1338f10 determine_value_range
        /home/user/software/gcc/src/gcc/tree-ssa-loop-niter.cc:466
0x133aaef bound_difference
        /home/user/software/gcc/src/gcc/tree-ssa-loop-niter.cc:759
0x133aaef number_of_iterations_cond
        /home/user/software/gcc/src/gcc/tree-ssa-loop-niter.cc:1929
0x133aaef number_of_iterations_exit_assumptions(loop*, edge_def*,
tree_niter_desc*, gcond**, bool, basic_block_def**)
        /home/user/software/gcc/src/gcc/tree-ssa-loop-niter.cc:3309
0x133c8bc number_of_iterations_exit(loop*, edge_def*, tree_niter_desc*, bool,
bool, basic_block_def**)
        /home/user/software/gcc/src/gcc/tree-ssa-loop-niter.cc:3374
0x1282248 number_of_latch_executions(loop*)
        /home/user/software/gcc/src/gcc/tree-scalar-evolution.cc:2908
0x1284de3 compute_overall_effect_of_inner_loop(loop*, tree_node*)
        /home/user/software/gcc/src/gcc/tree-scalar-evolution.cc:462
0x1283294 analyze_scalar_evolution_1
        /home/user/software/gcc/src/gcc/tree-scalar-evolution.cc:2031
0x1283c15 analyze_scalar_evolution(loop*, tree_node*)
        /home/user/software/gcc/src/gcc/tree-scalar-evolution.cc:2109
0x1283387 interpret_condition_phi
        /home/user/software/gcc/src/gcc/tree-scalar-evolution.cc:1667
0x1283387 analyze_scalar_evolution_1
        /home/user/software/gcc/src/gcc/tree-scalar-evolution.cc:2047
0x1283cf2 analyze_scalar_evolution(loop*, tree_node*)
        /home/user/software/gcc/src/gcc/tree-scalar-evolution.cc:2109
0x158f8f2 get_scev_info
        /home/user/software/gcc/src/gcc/vr-values.cc:211
0x158f8f2 range_of_var_in_loop(vrange&, tree_node*, loop*, gimple*,
range_query*)
        /home/user/software/gcc/src/gcc/vr-values.cc:304
/home/user/software/gcc/libexec/gcc/x86_64-pc-linux-gnu/16.0.1/cc1 -quiet
-imultiarch x86_64-linux-gnu bug.c -quiet -dumpdir a- -dumpbase bug.c
-dumpbase-ext .c -mtune=generic -march=x86-64 -O3 -freport-bug -o
/tmp/cctLrrRL.s
Please submit a full bug report, with preprocessed source.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
Preprocessed source stored into /tmp/ccSRdv2F.out file, please attach this to
your bugreport.

$ cat /tmp/ccSRdv2F.out
// Target: x86_64-pc-linux-gnu
// Configured with: /home/user/software/gcc/src/configure
--prefix=/home/user/software/gcc --enable-languages=c,c++ --disable-bootstrap
--disable-multilib --with-gmp=/usr --with-mpfr=/usr --with-mpc=/usr
// Thread model: posix
// Supported LTO compression algorithms: zlib zstd
// gcc version 16.0.1 20260415 (experimental) (GCC)
//
// during GIMPLE pass: lversion
// bug.c: In function ‘f’:
// bug.c:1:6: internal compiler error: tree check: expected ssa_name, have
integer_cst in expand_simple_operations, at tree-ssa-loop-niter.cc:2885
//     1 | void f(int x, int y, int z, int *buf)
//       |      ^
// 0x253a17b internal_error(char const*, ...)
//      /home/user/software/gcc/src/gcc/diagnostic-global-context.cc:787
// 0x8ce794 tree_check_failed(tree_node const*, char const*, int, char const*,
...)
//      /home/user/software/gcc/src/gcc/tree.cc:9219
// 0x89d3fa tree_check(tree_node*, char const*, int, char const*, tree_code)
//      /home/user/software/gcc/src/gcc/tree.h:3780
// 0x89d3fa expand_simple_operations
//      /home/user/software/gcc/src/gcc/tree-ssa-loop-niter.cc:2885
// 0x1334069 expand_simple_operations(tree_node*, tree_node*)
//      /home/user/software/gcc/src/gcc/tree-ssa-loop-niter.cc:2949
// 0x1338f10 refine_value_range_using_guard
//      /home/user/software/gcc/src/gcc/tree-ssa-loop-niter.cc:196
// 0x1338f10 determine_value_range
//      /home/user/software/gcc/src/gcc/tree-ssa-loop-niter.cc:466
// 0x133aaef bound_difference
//      /home/user/software/gcc/src/gcc/tree-ssa-loop-niter.cc:759
// 0x133aaef number_of_iterations_cond
//      /home/user/software/gcc/src/gcc/tree-ssa-loop-niter.cc:1929
// 0x133aaef number_of_iterations_exit_assumptions(loop*, edge_def*,
tree_niter_desc*, gcond**, bool, basic_block_def**)
//      /home/user/software/gcc/src/gcc/tree-ssa-loop-niter.cc:3309
// 0x133c8bc number_of_iterations_exit(loop*, edge_def*, tree_niter_desc*,
bool, bool, basic_block_def**)
//      /home/user/software/gcc/src/gcc/tree-ssa-loop-niter.cc:3374
// 0x1282248 number_of_latch_executions(loop*)
//      /home/user/software/gcc/src/gcc/tree-scalar-evolution.cc:2908
// 0x1284de3 compute_overall_effect_of_inner_loop(loop*, tree_node*)
//      /home/user/software/gcc/src/gcc/tree-scalar-evolution.cc:462
// 0x1283294 analyze_scalar_evolution_1
//      /home/user/software/gcc/src/gcc/tree-scalar-evolution.cc:2031
// 0x1283c15 analyze_scalar_evolution(loop*, tree_node*)
//      /home/user/software/gcc/src/gcc/tree-scalar-evolution.cc:2109
// 0x1283387 interpret_condition_phi
//      /home/user/software/gcc/src/gcc/tree-scalar-evolution.cc:1667
// 0x1283387 analyze_scalar_evolution_1
//      /home/user/software/gcc/src/gcc/tree-scalar-evolution.cc:2047
// 0x1283cf2 analyze_scalar_evolution(loop*, tree_node*)
//      /home/user/software/gcc/src/gcc/tree-scalar-evolution.cc:2109
// 0x158f8f2 get_scev_info
//      /home/user/software/gcc/src/gcc/vr-values.cc:211
// 0x158f8f2 range_of_var_in_loop(vrange&, tree_node*, loop*, gimple*,
range_query*)
//      /home/user/software/gcc/src/gcc/vr-values.cc:304
// -quiet -imultiarch x86_64-linux-gnu bug.c -quiet -dumpdir a- -dumpbase bug.c
-dumpbase-ext .c -mtune=generic -march=x86-64 -O3 -freport-bug -o -
-frandom-seed=0 -fdump-noaddr
// Please submit a full bug report, with preprocessed source.
// Please include the complete backtrace with any bug report.
// See <https://gcc.gnu.org/bugs/> for instructions.

// /home/user/software/gcc/libexec/gcc/x86_64-pc-linux-gnu/16.0.1/cc1 -quiet
-imultiarch x86_64-linux-gnu bug.c -quiet -dumpdir a- -dumpbase bug.c
-dumpbase-ext .c -mtune=generic -march=x86-64 -O3 -freport-bug -o -
-frandom-seed=0 -fdump-noaddr

# 0 "bug.c"
# 0 "<built-in>"
# 0 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3
# 0 "<command-line>" 2
# 1 "bug.c"
void f(int x, int y, int z, int *buf)
{
  for(int i = 0; i < x; ++i)
    for(int j = z; j < x-z; ++z)
      buf[j+(y-z+i)*x] = buf[x];
}

$ cat /tmp/bug.c
void f(int x, int y, int z, int *buf)
{
  for(int i = 0; i < x; ++i)
    for(int j = z; j < x-z; ++z)
      buf[j+(y-z+i)*x] = buf[x];
}
```

Compiler Explorer Reproducer: https://godbolt.org/z/d4PbrWP3x

Commit:
https://github.com/gcc-mirror/gcc/commit/83f8af8c51892a37a3c5cd749808c60980568278

Compiles without error on stable versions (e.g. 15.2) and with any optimisation
below -O3.

This seems to be very closely related to
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124692, although considering that
has been marked as "fixed" and this still surfaces, I think it may be a new way
to trigger a similar bug?

Reply via email to