https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113206
Bug ID: 113206 Summary: [14] RISC-V rv64gcv vector: Runtime mismatch with rv64gc 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: signed char e; short f = 8; signed d; int(g)(int o, int r) { return o & (o ^ -1) < 0 ? o : o - r; } #pragma pack(1) struct { short h; unsigned : 18; short i; long j; int k; char l; long m; int n; } a, b, s, c, *p = &b, *u = &s, q = {1}; void t() { *p = a; for (; e > -7; e = g(e, 8)) ; q = *u = c; for (; d - 3; d = 3) ; } int main() { t(); if (f == 8) return 0; else return 1; } Commands: rv64gcv: > /scratch/tc-testing/tc-jan-1-trunk/build-rv64gcv/bin/riscv64-unknown-linux-gnu-gcc > -march=rv64gcv -O3 red.c -o user-config.out > QEMU_CPU=rv64,vlen=128,v=true,vext_spec=v1.0,Zve32f=true,Zve64f=true timeout > --verbose -k 0.1 1 > /scratch/tc-testing/tc-dec-22-trunk/build-rv64gcv/bin/qemu-riscv64 > user-config.out > echo $? 1 rv64gc: > /scratch/tc-testing/tc-jan-1-trunk/build-rv64gcv/bin/riscv64-unknown-linux-gnu-gcc > -march=rv64gc -O3 red.c -o user-config.out > QEMU_CPU=rv64,vlen=128,v=true,vext_spec=v1.0,Zve32f=true,Zve64f=true timeout > --verbose -k 0.1 1 > /scratch/tc-testing/tc-dec-22-trunk/build-rv64gcv/bin/qemu-riscv64 > user-config.out > echo $? 0 Nothing touches f, so it should still be 8 after the function.