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.

Reply via email to