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

            Bug ID: 121957
           Summary: [16] AArch64: Miscompile at -O2/O3
           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 16.0.0 20250907 (experimental)
Testcase:
#include <stdint.h>
#include <stdio.h>
#define BS_VEC(type, num) type __attribute__((vector_size(num * sizeof(type))))
typedef int64_t int64;
uint64_t g;
uint64_t func_1() {
  BS_VEC(uint64_t, 16) BS_VAR_4 = {};
  asm goto("" : : : : BS_LABEL_1);
BS_LABEL_2:
  asm goto("" : : : : BS_LABEL_1);
BS_LABEL_0:
    asm goto("" : : : : BS_LABEL_2);
    BS_VAR_4 = 0 == __builtin_shufflevector(
                 __builtin_shufflevector(
                     (BS_VEC(int64_t, 32)){80383229547, 80383229547,
80383229547,
                                         80383229547, 80383229547, 80383229547,
                                         80383229547, 80383229547, 80383229547,
                                         80383229547},
                     (BS_VEC(int64_t, 32)){}, 28, 3, 5, 8, 9, 8, 3, 7, 4, 3, 3,
2,
                     9, 7, 5, 0),
                 (BS_VEC(int64_t, 16)){}, 2, 6, 3, 2, 4, 9, 4, 9, 2, 3, 0, 3,
7,
                 7, 1, 0);;
    asm goto("" : : : : BS_LABEL_0);
  BS_LABEL_1:
    asm goto("" : : : : BS_LABEL_0);
  g = BS_VAR_4[3];
  return 0;
}
int main() {
  func_1();
  printf("0x%016llx\n", g);
}

Commands:
> aarch64-unknown-linux-gnu-gcc -O0/O1 reduced.c && qemu-aarch64 a.out
> 0x0000000000000000

> aarch64-unknown-linux-gnu-gcc -O2/O3 reduced.c && qemu-aarch64 a.out
> 0x0000000000496d88

Reply via email to