blob: 9852ac38a6c88dab37bc41dd78b9a12c6c27dc32 [file] [log] [blame]
Wei Mi01414bd2017-09-25 19:57:59 +00001// RUN: %clang_cc1 %s -std=c++11 -emit-llvm -o - -triple=x86_64-linux-gnu | FileCheck %s
2
3struct AM {
4 int f1, f2;
5};
6alignas(8) AM m;
7AM load1() {
8 AM am;
9 // m is declared to align to 8bytes, so generate load atomic instead
10 // of libcall.
11 // CHECK-LABEL: @_Z5load1v
12 // CHECK: load atomic {{.*}} monotonic
13 __atomic_load(&m, &am, 0);
14 return am;
15}
16
17struct BM {
18 int f1;
19 alignas(8) AM f2;
20};
21BM bm;
22AM load2() {
23 AM am;
24 // BM::f2 is declared to align to 8bytes, so generate load atomic instead
25 // of libcall.
26 // CHECK-LABEL: @_Z5load2v
27 // CHECK: load atomic {{.*}} monotonic
28 __atomic_load(&bm.f2, &am, 0);
29 return am;
30}