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

            Bug ID: 119115
           Summary: [15 regression] RISC-V: miscompile at -O3 with zvl256b
                    -fsigned-char -fwrapv since r15-1579-g792f97b44ff
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ewlu at rivosinc dot com
  Target Milestone: ---

testcase:

short a[4][14][14];
void b(short d, short e, _Bool f, short g, int h, int i, char j, int k,
       int l, short m[][14], char n[], unsigned short o[][14][14], short p[]) {
  for (unsigned q = 0; q < (char)i; q++)
    for (unsigned char r = 0; r < (char)(-1748723647U * m[q][q]) - 20; r++)
      a[q][q][r] = p[q] || o[q][q][r];
}
long long seed;
short d;
short e;
_Bool f;
short g;
int h;
int i = 15963650;
char j;
int k;
int l;
short m[4][14];
char n[4];
unsigned short o[4][14][14];
short p[4];
int main() {
  for (int q = 0; q < 4; ++q) {
    p[q] = 4084;
    for (int r = 0; r < 4; ++r) {
      m[q][r] = 24482;
      for (int u = 0; u < 4; ++u)
        a[q][r][u] = 81;
    }
  }
  b(d, e, f, g, h, i, j, k, l, m, n, o, p);
  for (int q = 0; q < 4; ++q)
    for (int r = 0; r < 4; ++r)
      for (int u = 0; u < 14; ++u)
        seed ^= a[q][r][u] + (seed >> 2);

  __builtin_printf("%llu\n", seed);

}

> /scratch/ewlu/daily-upstream-build/build-gcv/bin/riscv64-unknown-linux-gnu-gcc
>  -march=rv64gcv_zvl256b -O3 ../../test-llvm/red.c -o user-config.out 
> -fsigned-char -fwrapv
>  
> QEMU_CPU=rv64,vlen=256,rvv_ta_all_1s=true,rvv_ma_all_1s=true,v=true,vext_spec=v1.0,zve32f=true,zve64f=true
>  /scratch/ewlu/daily-upstream-build/build-gcv/bin/qemu-riscv64 
> user-config.out 1
1

> /scratch/ewlu/daily-upstream-build/build-gcv/bin/riscv64-unknown-linux-gnu-gcc
>  -march=rv64gcv_zvl256b -O2 ../../test-llvm/red.c -o user-config.out 
> -fsigned-char -fwrapv
>  
> QEMU_CPU=rv64,vlen=256,rvv_ta_all_1s=true,rvv_ma_all_1s=true,v=true,vext_spec=v1.0,zve32f=true,zve64f=true
>  /scratch/ewlu/daily-upstream-build/build-gcv/bin/qemu-riscv64 
> user-config.out 1
0

x86 outputs 0.

Bisected to r15-1579-g792f97b44ff as the first bad commit.

Tried removing the extra arguments to b and the failure doesn't appear so not
sure if there is a simpler testcase.

found via fuzzer

Reply via email to