https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121281

            Bug ID: 121281
           Summary: [15/16 Regression] RISC-V: Miscompile at -O3 since
                    r15-7057-gd9d0eeea93d
           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:
_Bool a;
short b;
long long au;
signed char aj[22][22][22];
short an[22][22][22][22];
void e(signed char aj[][22][22], short an[][22][22][22]) {
  for (int ap = 2; ap < 21; ap += 3) {
    for (int aq = 3; aq < 20; aq++)
      a = aj[ap][8][aq] ? a : aj[ap][8][aq];
    for (char at = 3; at < 18; at += 368762369)
      b += ~({
        int ar = an[at + 2][2][2][1];
        unsigned as = 65535;
        ar < as ? ar : as;
      });
  }
}
int main() {
  e(aj, an);
  au = b;
  __builtin_printf("%llu\n", au);
}

Commands:
# -O3
> /scratch/ewlu/daily-upstream-build/build-gcv/bin/riscv64-unknown-linux-gnu-gcc
>  -O3 -mtune=generic-ooo red.c -o user-config.out -fsigned-char 
> -fno-strict-aliasing -fwrapv 
> 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
>  timeout --verbose -k 0.1 4 
> /scratch/ewlu/daily-upstream-build/build-gcv/bin/qemu-riscv64 user-config.out 
> 1
18446744073709551532

# -O2
> /scratch/ewlu/daily-upstream-build/build-gcv/bin/riscv64-unknown-linux-gnu-gcc
>  -O2 -mtune=generic-ooo red.c -o user-config.out -fsigned-char 
> -fno-strict-aliasing -fwrapv 
> 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
>  timeout --verbose -k 0.1 4 
> /scratch/ewlu/daily-upstream-build/build-gcv/bin/qemu-riscv64 user-config.out 
> 1
18446744073709551511

Found via fuzzer

Reply via email to