blob: 364743dd53f004c1949a27bf69760b860b112560 [file] [log] [blame]
Tim Northover9dc1d0c2018-04-23 08:16:24 +00001// RUN: %clang_cc1 -triple aarch64-linux-gnu %s -emit-llvm -o /dev/null -verify
2
3typedef struct {
4 int a, b;
5} IntPair;
6
7typedef struct {
8 long long a;
9} LongStruct;
10
11typedef int __attribute__((aligned(1))) unaligned_int;
12
13void func(IntPair *p) {
14 IntPair res;
15 __atomic_load(p, &res, 0); // expected-warning {{misaligned or large atomic operation may incur significant performance penalty}}
16 __atomic_store(p, &res, 0); // expected-warning {{misaligned or large atomic operation may incur significant performance penalty}}
17 __atomic_fetch_add((unaligned_int *)p, 1, 2); // expected-warning {{misaligned or large atomic operation may incur significant performance penalty}}
18 __atomic_fetch_sub((unaligned_int *)p, 1, 3); // expected-warning {{misaligned or large atomic operation may incur significant performance penalty}}
19}
20
21void 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}