https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120297
Bug ID: 120297 Summary: [16 Regression] RISC-V: Miscompile at -O3 Product: gcc Version: 16.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: unsigned a; short c; char d; unsigned long e; _Bool f[10][10]; unsigned g[10]; long long ak; char i = 7; long long t[10]; short x[10][10][10][10]; short y[10][10][10][10]; void h(char i, long long t[], short x[][10][10][10], short y[][10][10][10], _Bool aa) { for (int j = 2; j < 8; j += 2) { for (short k = 0; k < 10; k++) { for (int l = 3; l < 8; l += 2) a = x[1][j][k][l]; c = x[c][1][1][c]; } for (int k = 0; k < 10; k++) { f[2][k] |= (_Bool)t[c]; g[c] = t[c + 1]; d += y[j][1][k][k]; e = e > i ? e : i; } } } int main() { t[c] = 1; h(i, t, x, y, a); for (int j = 0; j < 10; ++j) for (int k = 0; k < 10; ++k) ak ^= f[j][k] + 238516665 + (ak >> 2); ak ^= g[c] + 238516665 + (ak >> 2); __builtin_printf("%llu\n", ak); } Commands: # -O3 > /scratch/ewlu/daily-upstream-build/build-gcv/bin/riscv64-unknown-linux-gnu-gcc > -march=rv64gcv -flto -O3 red.c -o user-config.out -fsigned-char > -fno-strict-aliasing -fwrapv > QEMU_CPU=rv64,vlen=128,rvv_ta_all_1s=true,rvv_ma_all_1s=true,v=true,vext_spec=v1.0,zve32f=true,zve64f=true > timeout --verbose -k 0.1 4 > /scratch/ewlu/daily-upstream-build/build-gcv/bin/qemu-riscv64 user-config.out > 1 234635117 # -O2 > /scratch/ewlu/daily-upstream-build/build-gcv/bin/riscv64-unknown-linux-gnu-gcc > -march=rv64gcv -flto -O2 red.c -o user-config.out -fsigned-char > -fno-strict-aliasing -fwrapv > QEMU_CPU=rv64,vlen=128,rvv_ta_all_1s=true,rvv_ma_all_1s=true,v=true,vext_spec=v1.0,zve32f=true,zve64f=true > timeout --verbose -k 0.1 4 > /scratch/ewlu/daily-upstream-build/build-gcv/bin/qemu-riscv64 user-config.out > 1 234635118 Bisected to r15-6657-g405c99c1721 as first bad commit Tried manually reducing testcase more but failed to reproduce the error when doing so. Found via fuzzer