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

            Bug ID: 126411
           Summary: RISC-V rv64gcv: wrong code at -O0 with simple shuffle
           Product: gcc
           Version: 17.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: xxs_chy at outlook dot com
  Target Milestone: ---

Testcase:
#include <stdint.h>
#include <stdio.h>
typedef int8_t v4i8 __attribute__((vector_size(4)));
v4i8 g2 = { 7, 0, 8, 70 }, g12;
int main()
{
    g12 = __builtin_shufflevector(g2, g2, 7, 0, 7, 0);
    uint64_t __chk = g12[2];
    printf("checksum=0x%016llx\n", (unsigned long long)__chk);
}

commands:
> $GCC_RISCV64 -march=rv64gcv -O0 -static reduced.c && qemu-riscv64 a.out
> checksum=0x0000000000000000


> $GCC_RISCV64 -march=rv64gcv -O1 -static reduced.c && qemu-riscv64 a.out
> checksum=0x0000000000000046

gcc version 17.0.0 20260725 (experimental) (GCC)

Reply via email to