https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118950
Bug ID: 118950
Summary: [14/15 regression] RISC-V: rv64gcv runtime mismatch at
-O3 since r14-4038-gb975c0dc3be
Product: gcc
Version: 15.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 char a;
long long r;
_Bool h = 1;
short j[23];
_Bool k[3][23];
void b(_Bool h, short j[], _Bool k[][23]) {
for (int m = 0; m < 23; m += 3)
for (short n = 0; n < 22; n += 4)
a = ({
unsigned char o = a;
unsigned char p = j[n] ? h : k[m][n];
o > p ? o : p;
});
}
int main() {
for (int m = 0; m < 23; ++m)
j[m] = 10;
b(h, j, k);
r = a;
__builtin_printf("%llu\n", r);
}
commands:
> ./bin/riscv64-unknown-linux-gnu-gcc -march=rv64gcv -flto -O3 red.c -o
> user-config.out
> 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
> /scratch/ewlu/daily-upstream-build/build-gcv/bin/qemu-riscv64
> user-config.out 1
255
> ./bin/riscv64-unknown-linux-gnu-gcc -march=rv64gcv -flto -O2 red.c -o
> user-config.out
> 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
> /scratch/ewlu/daily-upstream-build/build-gcv/bin/qemu-riscv64
> user-config.out 1
1
x86 also outputs 1
bisected to r14-4038-gb975c0dc3be as the first bad commit
tried inlining the function b but the error disappears when doing so.
found via fuzzer.