https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121780
Bug ID: 121780 Summary: [Trunk] RISC-V rv64gcv: miscompile at -O1 Product: gcc Version: 16.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: --- GCC version: gcc version 16.0.0 20250903 (experimental) (gbda76b479) Testcase: #include <stdint.h> #include <stdio.h> typedef uint8_t a; typedef a b __attribute__((vector_size(4))); typedef a c __attribute__((vector_size(8))); int d[10]; struct { int16_t e } f; int64_t g; int32_t j(int32_t, int32_t, int8_t, uint8_t, int64_t) { c k = {20927, 0, 9, 6, 6, 2}; int *l = &d[1]; for (;;) { asm goto("" : : : : m); k = __builtin_shufflevector( __builtin_shufflevector(k, k, 3, 1, 1, 9, 4, 5, 9, 0), __builtin_shufflevector((b){}, (b){}, 1, 3, 7, 6, 0, 0, 6, 2), 10, 2, 1, 7, 7, 7, 4, 5); for (; f.e >= 0;) { *l = k[7]; uint32_t n[][7][6] = {}; return n[0][5][0]; m: } } } int main() { uint64_t o = 1; j(o, g, g, o, 0); int BS_CHECKSUM = 5; for (int i = 0; i < 10; i++) BS_CHECKSUM ^= d[i]; printf("BackSmith Checksum = 0x%016llx\n", BS_CHECKSUM); } Commands: > riscv64-unknown-elf-gcc -march=rv64gcv -O1 reduced.c -static && qemu-riscv64 > a.out > BackSmith Checksum = 0x0000000000000005 > riscv64-unknown-elf-gcc -march=rv64gcv -O0/O1/O3 reduced.c -static && > qemu-riscv64 a.out > BackSmith Checksum = 0x0000000000000007