https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113209
Bug ID: 113209 Summary: [14] RISC-V rv64gcv_zvl256b 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: int b, c, d, f, i, a; int e[1] = {0}; int *g = e; int *k = e; int *z; long h; int j[5] = {0,0,0,0,0}; void n() { if (c) { int **l = &z; *l = e; while (d) ; } } void o() { for (; b < 5; b += a) { n(); for (h = 0; h < 5; h++) j[h] = 1; int m = *e != *g; a |= i <= m; f = -12; for (; f; f++) if (*k) break; } } int main() { o(); if (a == 1) return 0; else return 1; } Commands: > /scratch/tc-testing/tc-jan-1-trunk/build-rv64gcv/bin/riscv64-unknown-linux-gnu-gcc > -march=rv64gcv_zvl256b -O3 red.c -o user-config.out > QEMU_CPU=rv64,vlen=256,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 > /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=256,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 With a printf: gcv_zvl256b a = 9 gc a = 1 Analysis: Working backwards from a a |= i <= m Since true/false only evaluate to 1/0, 'a' should never be 9