https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120930
Bug ID: 120930 Summary: [16 Regression] RISC-V: Miscompile at -O[23] with zvl256b -mrvv-vector-bits=zvl since r16-1645-g309dbcea2ca 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: long long s; unsigned m[23][23]; signed char n[3][23]; long long a[3][23][23]; unsigned short b[23][23]; int main() { for (int p = 0; p < 23; ++p) for (int q = 0; q < 3; ++q) m[p][q] = 561435; for (int p = 0; p < 3; ++p) for (int q = 0; q < 23; ++q) n[p][q] = 3; for (_Bool p = 0; p < 1; p = 109) for (signed char q = m[p][p] - 27; q < (char)405393777824 + 119; q++) { a[p][q][q] = 0; b[q][q] = n[p][q]; } for (int p = 0; p < 3;) for (int q; p < 23; ++p) for (q = 0; q < 23; ++q) s = b[p][q]; __builtin_printf("%llu\n", s); } Commands: # -O2 > /scratch/ewlu/daily-upstream-build/build-gcv/bin/riscv64-unknown-linux-gnu-gcc > -march=rv64gcv_zvl256b -O2 -mrvv-vector-bits=zvl red.c -o user-config.out > -fsigned-char -fno-strict-aliasing -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 > timeout --verbose -k 0.1 4 > /scratch/ewlu/daily-upstream-build/build-gcv/bin/qemu-riscv64 user-config.out > 1 0 # -O1 > /scratch/ewlu/daily-upstream-build/build-gcv/bin/riscv64-unknown-linux-gnu-gcc > -march=rv64gcv_zvl256b -O1 -mrvv-vector-bits=zvl red.c -o user-config.out > -fsigned-char -fno-strict-aliasing -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 > timeout --verbose -k 0.1 4 > /scratch/ewlu/daily-upstream-build/build-gcv/bin/qemu-riscv64 user-config.out > 1 3 Removing -mrvv-vector-bits=zvl makes the miscompile disappear Found via fuzzer