1 // RUN: %clang_cc1 -triple aarch64-linux-gnu %s -emit-llvm -o /dev/null -verify 2 3 typedef struct { 4 int a, b; 5 } IntPair; 6 7 typedef struct { 8 long long a; 9 } LongStruct; 10 11 typedef int __attribute__((aligned(1))) unaligned_int; 12 13 void func(IntPair *p) { 14 IntPair res; 15 __atomic_load(p, &res, 0); // expected-warning {{misaligned atomic operation may incur significant performance penalty}} 16 __atomic_store(p, &res, 0); // expected-warning {{misaligned atomic operation may incur significant performance penalty}} 17 __atomic_fetch_add((unaligned_int *)p, 1, 2); // expected-warning {{misaligned atomic operation may incur significant performance penalty}} 18 __atomic_fetch_sub((unaligned_int *)p, 1, 3); // expected-warning {{misaligned atomic operation may incur significant performance penalty}} 19 } 20 21 void func1(LongStruct *p) { 22 LongStruct res; 23 __atomic_load(p, &res, 0); 24 __atomic_store(p, &res, 0); 25 __atomic_fetch_add((int *)p, 1, 2); 26 __atomic_fetch_sub((int *)p, 1, 3); 27 } 28