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

            Bug ID: 114668
           Summary: [14] RISC-V rv64gcv: miscompile at -O3
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: patrick at rivosinc dot com
  Target Milestone: ---

Testcase:
char a;
int b;
short e[14];
char f[4][12544];
_Bool c[4][5];
int main() {
  for (int i = 0; i < 4; ++i)
    for (int l = 0; l < 15; ++l)
      for (int m = 0; m < 15; ++m)
        f[i][l * m] = 3;
  for (int j = 0; j < 4; j += 1)
    for (int k = 3; k < 13; k += 3)
      for (_Bool l = 0; l < 1; l = 1)
        for (int m = 0; m < 4; m += 1) {
          a = 0;
          b -= e[k];
          c[j][m] = f[j][6];
        }
  for (long i = 2; i < 4; ++i)
    __builtin_printf("%X\n", c[3][3]);
}

Commands:
> /scratch/tc-testing/tc-apr-9/build-rv64gcv/bin/riscv64-unknown-linux-gnu-gcc 
> -march=rv64gcv -O3 red.c -o red.out
> /scratch/tc-testing/tc-apr-9/build-rv64gcv/bin/qemu-riscv64 red.out
1
FF

> /scratch/tc-testing/tc-apr-9/build-rv64gcv/bin/riscv64-unknown-linux-gnu-gcc 
> -march=rv64gcv -O2 red.c -o red.out
> /scratch/tc-testing/tc-apr-9/build-rv64gcv/bin/qemu-riscv64 red.out
1
1

Adjusting the f array to its minimal size of f[4][255] makes the issue go away.

Looks similar to pr114665 so this might be a duplicate/related. Submitting this
bug in case it's easier to understand the root cause.

Found via fuzzer.

Reply via email to