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

            Bug ID: 123731
           Summary: [16 Regression] Miscompile at -O1/O2/O3/Os
           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: ---

Testcase:
#include <stdint.h>
#include <stdio.h>
#include <arm_neon.h>
#define BS_VEC(type, num) type __attribute__((vector_size(num * sizeof(type))))
#define BARRIER_v4u16(x) ((BS_VEC(uint16_t, 4))vqadd_u16(x, (uint16x4_t){}))
uint64_t BS_CHECKSUM;
void func_1()
{
    BS_VEC(uint32_t, 4) BS_VAR_0[9] = {};
    uint32_t BS_TEMP_43 = __builtin_convertvector(
        __builtin_shufflevector(
            (BS_VEC(uint16_t, 4)){},
            BARRIER_v4u16(((BS_VEC(uint16_t, 4)){ 0, 0, 0, -6 })), 0, 5, 7, 3,
            6, 2, 5, 4),
        BS_VEC(int16_t, 8))[2];
    BS_VAR_0[0] +=
        (BS_VEC(uint32_t, 4)){ BS_TEMP_43, BS_TEMP_43, BS_TEMP_43, BS_TEMP_43
};
    BS_CHECKSUM += BS_VAR_0[0][0];
}
int main()
{
    func_1();
    printf("BackSmith Checksum = 0x%016llx\n", BS_CHECKSUM);
}

Commands:
> aarch64-unknown-linux-musl-gcc -O1 -static a.c && qemu-aarch64 a.out
> BackSmith Checksum = 0x000000000000fffa

> aarch64-unknown-linux-musl-gcc -O0 -static a.c && qemu-aarch64 a.out
> BackSmith Checksum = 0x00000000fffffffa
gcc version 16.0.1 20260120 (experimental)

Reply via email to