Daniel Dunbar | a572887 | 2009-12-15 20:14:24 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 -triple i386-apple-darwin9 -fsyntax-only -verify %s |
Andy Gibbs | 8e8fb3b | 2012-10-19 12:44:48 +0000 | [diff] [blame] | 2 | // expected-no-diagnostics |
Eli Friedman | c508203 | 2009-02-22 03:31:23 +0000 | [diff] [blame] | 3 | |
| 4 | // PR3433 |
| 5 | double g1; |
| 6 | short chk1[__alignof__(g1) == 8 ? 1 : -1]; |
Eli Friedman | 1eed602 | 2009-05-25 21:27:19 +0000 | [diff] [blame] | 7 | short chk2[__alignof__(double) == 8 ? 1 : -1]; |
| 8 | |
| 9 | long long g2; |
| 10 | short chk1[__alignof__(g2) == 8 ? 1 : -1]; |
| 11 | short chk2[__alignof__(long long) == 8 ? 1 : -1]; |
| 12 | |
Chad Rosier | cde7a1d | 2012-03-21 20:20:47 +0000 | [diff] [blame] | 13 | unsigned long long g5; |
| 14 | short chk1[__alignof__(g5) == 8 ? 1 : -1]; |
| 15 | short chk2[__alignof__(unsigned long long) == 8 ? 1 : -1]; |
| 16 | |
Eli Friedman | 1eed602 | 2009-05-25 21:27:19 +0000 | [diff] [blame] | 17 | _Complex double g3; |
| 18 | short chk1[__alignof__(g3) == 8 ? 1 : -1]; |
| 19 | short chk2[__alignof__(_Complex double) == 8 ? 1 : -1]; |
Charles Davis | 05f6247 | 2010-02-23 04:52:00 +0000 | [diff] [blame] | 20 | |
| 21 | // PR6362 |
Carl Norum | e224ba7 | 2011-03-07 22:57:45 +0000 | [diff] [blame] | 22 | struct __attribute__((packed)) {unsigned int a;} g4; |
Charles Davis | 05f6247 | 2010-02-23 04:52:00 +0000 | [diff] [blame] | 23 | short chk1[__alignof__(g4) == 1 ? 1 : -1]; |
| 24 | short chk2[__alignof__(g4.a) == 1 ? 1 : -1]; |
| 25 | |
Argyrios Kyrtzidis | cd88b41 | 2011-04-26 21:05:39 +0000 | [diff] [blame] | 26 | |
| 27 | // PR5637 |
| 28 | |
| 29 | #define ALIGNED(x) __attribute__((aligned(x))) |
| 30 | |
| 31 | typedef ALIGNED(2) struct { |
| 32 | char a[3]; |
| 33 | } T; |
| 34 | |
| 35 | short chk1[sizeof(T) == 3 ? 1 : -1]; |
| 36 | short chk2[sizeof(T[1]) == 4 ? 1 : -1]; |
| 37 | short chk3[sizeof(T[2]) == 6 ? 1 : -1]; |
| 38 | short chk4[sizeof(T[2][1]) == 8 ? 1 : -1]; |
| 39 | short chk5[sizeof(T[1][2]) == 6 ? 1 : -1]; |
| 40 | |
| 41 | typedef struct ALIGNED(2) { |
| 42 | char a[3]; |
| 43 | } T2; |
| 44 | |
| 45 | short chk1[sizeof(T2) == 4 ? 1 : -1]; |
| 46 | short chk2[sizeof(T2[1]) == 4 ? 1 : -1]; |
| 47 | short chk3[sizeof(T2[2]) == 8 ? 1 : -1]; |
| 48 | short chk4[sizeof(T2[2][1]) == 8 ? 1 : -1]; |
| 49 | short chk5[sizeof(T2[1][2]) == 8 ? 1 : -1]; |