blob: 9443af354ec5d6dff88ea7bf3e785af68933ef6b [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;
Richard Smithedb9fbb2018-09-07 21:24:27 +000015 __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}}
Tim Northover9dc1d0c2018-04-23 08:16:24 +000019}
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}