1a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// RUN: %clang_cc1 -triple i386-apple-darwin9 -fsyntax-only -verify %s
2396b2a22788b0134018760d6a476de1e20f81334Daniel Dunbar
3396b2a22788b0134018760d6a476de1e20f81334Daniel Dunbarint x __attribute__((aligned(3))); // expected-error {{requested alignment is not a power of 2}}
4dcdafb6a701aa9d81edcb088915f58933315dc05Eli Friedman
5dcdafb6a701aa9d81edcb088915f58933315dc05Eli Friedman// PR3254
6dcdafb6a701aa9d81edcb088915f58933315dc05Eli Friedmanshort g0[3] __attribute__((aligned));
7dcdafb6a701aa9d81edcb088915f58933315dc05Eli Friedmanshort g0_chk[__alignof__(g0) == 16 ? 1 : -1];
818857644059c45da6776f1a288eec7b4cf3a844aDouglas Gregor
918857644059c45da6776f1a288eec7b4cf3a844aDouglas Gregor// <rdar://problem/6840045>
1018857644059c45da6776f1a288eec7b4cf3a844aDouglas Gregortypedef char ueber_aligned_char __attribute__((aligned(8)));
1118857644059c45da6776f1a288eec7b4cf3a844aDouglas Gregor
1218857644059c45da6776f1a288eec7b4cf3a844aDouglas Gregorstruct struct_with_ueber_char {
1318857644059c45da6776f1a288eec7b4cf3a844aDouglas Gregor  ueber_aligned_char c;
1418857644059c45da6776f1a288eec7b4cf3a844aDouglas Gregor};
1518857644059c45da6776f1a288eec7b4cf3a844aDouglas Gregor
164081a5c5f1381c4ec77f8ab3866693917e4329c4John McCallchar a = 0;
1718857644059c45da6776f1a288eec7b4cf3a844aDouglas Gregor
1818857644059c45da6776f1a288eec7b4cf3a844aDouglas Gregorchar a0[__alignof__(ueber_aligned_char) == 8? 1 : -1] = { 0 };
1918857644059c45da6776f1a288eec7b4cf3a844aDouglas Gregorchar a1[__alignof__(struct struct_with_ueber_char) == 8? 1 : -1] = { 0 };
204081a5c5f1381c4ec77f8ab3866693917e4329c4John McCallchar a2[__alignof__(a) == 1? : -1] = { 0 };
214081a5c5f1381c4ec77f8ab3866693917e4329c4John McCallchar a3[sizeof(a) == 1? : -1] = { 0 };
224081a5c5f1381c4ec77f8ab3866693917e4329c4John McCall
234081a5c5f1381c4ec77f8ab3866693917e4329c4John McCall// rdar://problem/8335865
244081a5c5f1381c4ec77f8ab3866693917e4329c4John McCallint b __attribute__((aligned(2)));
254081a5c5f1381c4ec77f8ab3866693917e4329c4John McCallchar b1[__alignof__(b) == 2 ?: -1] = {0};
264081a5c5f1381c4ec77f8ab3866693917e4329c4John McCall
274081a5c5f1381c4ec77f8ab3866693917e4329c4John McCallstruct C { int member __attribute__((aligned(2))); } c;
284081a5c5f1381c4ec77f8ab3866693917e4329c4John McCallchar c1[__alignof__(c) == 4 ?: -1] = {0};
294081a5c5f1381c4ec77f8ab3866693917e4329c4John McCallchar c2[__alignof__(c.member) == 4 ?: -1] = {0};
304081a5c5f1381c4ec77f8ab3866693917e4329c4John McCall
314081a5c5f1381c4ec77f8ab3866693917e4329c4John McCallstruct D { int member __attribute__((aligned(2))) __attribute__((packed)); } d;
324081a5c5f1381c4ec77f8ab3866693917e4329c4John McCallchar d1[__alignof__(d) == 2 ?: -1] = {0};
334081a5c5f1381c4ec77f8ab3866693917e4329c4John McCallchar d2[__alignof__(d.member) == 2 ?: -1] = {0};
344081a5c5f1381c4ec77f8ab3866693917e4329c4John McCall
35b2749b134a190c3b60cf22c11686afd8fcc7c6d0Douglas Gregorstruct E { int member __attribute__((align(2))); } __attribute__((packed));
364081a5c5f1381c4ec77f8ab3866693917e4329c4John McCallstruct E e;
374081a5c5f1381c4ec77f8ab3866693917e4329c4John McCallchar e1[__alignof__(e) == 2 ?: -1] = {0};
384081a5c5f1381c4ec77f8ab3866693917e4329c4John McCallchar e2[__alignof__(e.member) == 2 ?: -1] = {0};
39