The ability to specify alignment was recently added, and it's an important property which we should ensure is set as expected by Clang. (Especially before making further changes to Clang's code in this area.) But, because it's on the end of the lines, the existing tests all ignore it. Therefore, update all the tests to also verify the expected alignment for atomicrmw and cmpxchg. While I was in there, I also updated uses of 'load atomic' and 'store atomic', and added the memory ordering, where that was missing.
15 lines
523 B
C++
15 lines
523 B
C++
// RUN: %clang_cc1 -emit-llvm -triple=le32-unknown-nacl -o - %s | FileCheck %s
|
|
|
|
int f();
|
|
|
|
// Test that PNaCl uses the Itanium/x86 ABI in which the static
|
|
// variable's guard variable is tested via "load i8 and compare with
|
|
// zero" rather than the ARM ABI which uses "load i32 and test the
|
|
// bottom bit".
|
|
void g() {
|
|
static int a = f();
|
|
}
|
|
// CHECK: [[LOAD:%.*]] = load atomic i8, i8* bitcast (i64* @_ZGVZ1gvE1a to i8*) acquire, align 8
|
|
// CHECK-NEXT: [[GUARD:%.*]] = icmp eq i8 [[LOAD]], 0
|
|
// CHECK-NEXT: br i1 [[GUARD]]
|