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.

Reply via email to