xref: /llvm-project/clang/test/CodeGen/PowerPC/atomic-alignment.c (revision 549e118e93c666914a1045fde38a2cac33e1e445)
1 // RUN: %clang_cc1 -Werror -triple powerpc-unknown-unknown -emit-llvm -o - %s | \
2 // RUN:   FileCheck %s --check-prefixes=PPC,PPC32
3 // RUN: %clang_cc1 -Werror -triple powerpc64le-unknown-linux -emit-llvm -o - %s | \
4 // RUN:   FileCheck %s --check-prefixes=PPC,PPC64
5 // RUN: %clang_cc1 -Werror -triple powerpc64le-unknown-linux -emit-llvm -o - %s \
6 // RUN:   -target-cpu pwr8 | FileCheck %s --check-prefixes=PPC,PPC64
7 // RUN: %clang_cc1 -Werror -triple powerpc64-unknown-aix -emit-llvm -o - %s | \
8 // RUN:   FileCheck %s --check-prefixes=PPC,AIX64
9 // RUN: %clang_cc1 -Werror -triple powerpc64-unknown-aix -emit-llvm -o - %s \
10 // RUN:   -target-cpu pwr8 | FileCheck %s --check-prefixes=PPC,AIX64
11 
12 // PPC: @c = global i8 0, align 1{{$}}
13 _Atomic(char) c;
14 
15 // PPC: @s = global i16 0, align 2{{$}}
16 _Atomic(short) s;
17 
18 // PPC: @i = global i32 0, align 4{{$}}
19 _Atomic(int) i;
20 
21 // PPC32: @l = global i32 0, align 4{{$}}
22 // PPC64: @l = global i64 0, align 8{{$}}
23 // AIX64: @l = global i64 0, align 8{{$}}
24 _Atomic(long) l;
25 
26 // PPC: @ll = global i64 0, align 8{{$}}
27 _Atomic(long long) ll;
28 
29 typedef struct {
30   char x[8];
31 } O;
32 
33 // PPC32: @o = global %struct.O zeroinitializer, align 1{{$}}
34 // PPC64: @o = global %struct.O zeroinitializer, align 8{{$}}
35 // AIX64: @o = global %struct.O zeroinitializer, align 8{{$}}
36 _Atomic(O) o;
37 
38 typedef struct {
39   char x[16];
40 } Q;
41 
42 // PPC32: @q = global %struct.Q zeroinitializer, align 1{{$}}
43 // PPC64: @q = global %struct.Q zeroinitializer, align 16{{$}}
44 // AIX64: @q = global %struct.Q zeroinitializer, align 16{{$}}
45 _Atomic(Q) q;
46