1 // RUN: %clang_cc1 %s -std=c++11 -emit-llvm -o - -triple=x86_64-linux-gnu | FileCheck %s 2 3 struct AM { 4 int f1, f2; 5 }; 6 alignas(8) AM m; load1()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, align 8 13 __atomic_load(&m, &am, 0); 14 return am; 15 } 16 17 struct BM { 18 int f1; 19 alignas(8) AM f2; 20 }; 21 BM bm; load2()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, align 8 28 __atomic_load(&bm.f2, &am, 0); 29 return am; 30 } 31