xref: /aosp_15_r20/external/clang/test/Sema/align-x86.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 -triple i386-apple-darwin9 -fsyntax-only -verify %s
2*67e74705SXin Li // expected-no-diagnostics
3*67e74705SXin Li 
4*67e74705SXin Li // PR3433
5*67e74705SXin Li double g1;
6*67e74705SXin Li short chk1[__alignof__(g1) == 8 ? 1 : -1];
7*67e74705SXin Li short chk2[__alignof__(double) == 8 ? 1 : -1];
8*67e74705SXin Li 
9*67e74705SXin Li long long g2;
10*67e74705SXin Li short chk1[__alignof__(g2) == 8 ? 1 : -1];
11*67e74705SXin Li short chk2[__alignof__(long long) == 8 ? 1 : -1];
12*67e74705SXin Li 
13*67e74705SXin Li unsigned long long g5;
14*67e74705SXin Li short chk1[__alignof__(g5) == 8 ? 1 : -1];
15*67e74705SXin Li short chk2[__alignof__(unsigned long long) == 8 ? 1 : -1];
16*67e74705SXin Li 
17*67e74705SXin Li _Complex double g3;
18*67e74705SXin Li short chk1[__alignof__(g3) == 8 ? 1 : -1];
19*67e74705SXin Li short chk2[__alignof__(_Complex double) == 8 ? 1 : -1];
20*67e74705SXin Li 
21*67e74705SXin Li // PR6362
22*67e74705SXin Li struct __attribute__((packed)) {unsigned int a;} g4;
23*67e74705SXin Li short chk1[__alignof__(g4) == 1 ? 1 : -1];
24*67e74705SXin Li short chk2[__alignof__(g4.a) == 1 ? 1 : -1];
25*67e74705SXin Li 
26*67e74705SXin Li double g6[3];
27*67e74705SXin Li short chk1[__alignof__(g6) == 8 ? 1 : -1];
28*67e74705SXin Li short chk2[__alignof__(double[3]) == 8 ? 1 : -1];
29*67e74705SXin Li 
30*67e74705SXin Li enum { x = 18446744073709551615ULL } g7;
31*67e74705SXin Li short chk1[__alignof__(g7) == 8 ? 1 : -1];
32*67e74705SXin Li 
33*67e74705SXin Li // PR5637
34*67e74705SXin Li 
35*67e74705SXin Li #define ALIGNED(x) __attribute__((aligned(x)))
36*67e74705SXin Li 
37*67e74705SXin Li typedef ALIGNED(2) struct {
38*67e74705SXin Li   char a[3];
39*67e74705SXin Li } T;
40*67e74705SXin Li 
41*67e74705SXin Li short chk1[sizeof(T)       == 3 ? 1 : -1];
42*67e74705SXin Li short chk2[sizeof(T[1])    == 4 ? 1 : -1];
43*67e74705SXin Li short chk3[sizeof(T[2])    == 6 ? 1 : -1];
44*67e74705SXin Li short chk4[sizeof(T[2][1]) == 8 ? 1 : -1];
45*67e74705SXin Li short chk5[sizeof(T[1][2]) == 6 ? 1 : -1];
46*67e74705SXin Li 
47*67e74705SXin Li typedef struct ALIGNED(2) {
48*67e74705SXin Li   char a[3];
49*67e74705SXin Li } T2;
50*67e74705SXin Li 
51*67e74705SXin Li short chk1[sizeof(T2)       == 4 ? 1 : -1];
52*67e74705SXin Li short chk2[sizeof(T2[1])    == 4 ? 1 : -1];
53*67e74705SXin Li short chk3[sizeof(T2[2])    == 8 ? 1 : -1];
54*67e74705SXin Li short chk4[sizeof(T2[2][1]) == 8 ? 1 : -1];
55*67e74705SXin Li short chk5[sizeof(T2[1][2]) == 8 ? 1 : -1];
56