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)