14967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// RUN: %clang_cc1 %s -fsyntax-only -verify -triple=i686-apple-darwin9 24967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// RUN: %clang_cc1 %s -fsyntax-only -verify -triple=arm-linux-gnueabihf 34967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// RUN: %clang_cc1 %s -fsyntax-only -verify -triple=aarch64-linux-gnu 44967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// RUN: %clang_cc1 %s -fsyntax-only -verify -triple=x86_64-pc-linux-gnu 54967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// expected-no-diagnostics 64967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 74967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#define CHECK_SIZE(name, size) \ 84967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar extern int name##_1[sizeof(name) == size ? 1 : -1]; 94967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct __attribute__((packed)) { 124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int a; 134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int b : 4; 144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int c : 32; 154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar} s0; 164967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(s0,9) 174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma pack (1) 194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct { 204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int a; 214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int b : 4; 224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int c : 32; 234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar} s1; 244967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(s1,9) 254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma pack (2) 274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct { 284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int a; 294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int b : 4; 304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int c : 32; 314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar} s2; 324967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(s2,10) 334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma pack (2) 354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct __attribute__((packed)) { 364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int a; 374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int b : 4; 384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int c : 32; 394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar} s3; 404967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(s3,10) 414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma pack (4) 434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct __attribute__((packed)) { 444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int a; 454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int b : 4; 464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int c : 32; 474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar} s4; 484967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(s4,12) 494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma pack (16) 514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct { 524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int a; 534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int __attribute__((packed)) b : 4; 544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int __attribute__((packed)) c : 32; 554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar} s41; 564967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(s41,12) 574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma pack (16) 594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct { 604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int a; 614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int b : 4; 624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int c : 32; 634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar} s5; 644967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(s5,12) 654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma pack (1) 674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct __attribute__((aligned(4))) { 684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int a; 694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int b : 4; 704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int c : 32; 714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar} s6; 724967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(s6,12) 734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma pack (2) 754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct { 764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char a; 774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int b : 4; 784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int c : 32; 794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char s; 804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar} s7; 814967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(s7,8) 824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma pack (1) 844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct { 854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char a; 864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int b : 4; 874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int c : 28; 884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char s; 894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar} s8; 904967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(s8,6) 914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma pack (8) 934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct { 944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char a; 954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int b : 4; 964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int c : 28; 974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char s; 984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar} s9; 994967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(s9,8) 1004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma pack (8) 1024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct { 1034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char a; 1044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char s; 1054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar} s10; 1064967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(s10,2) 1074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma pack(4) 1094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct { 1104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char a; 1114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int b : 4; 1124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int c : 28; 1134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char s1; 1144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char s2; 1154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char s3; 1164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar} s11; 1174967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(s11,8) 1184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma pack(4) 1204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct { 1214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar short s1; 1224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int a1 : 17; 1234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int a2 : 17; 1244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int a3 : 30; 1254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar short s2; 1264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar} s12; 1274967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(s12,12) 1284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma pack(4) 1304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct { 1314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char c1; 1324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int i1 : 17; 1334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int i2 : 17; 1344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int i3 : 30; 1354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char c2; 1364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar} s13; 1374967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(s13,12) 1384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma pack(2) 1404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct { 1414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char a; 1424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int s; 1434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar} s14; 1444967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(s14,6) 1454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma pack(4) 1474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct { 1484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char a; 1494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar short s; 1504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar} s15; 1514967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(s15,4) 1524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma pack(2) 1544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct { 1554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char a; 1564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int b : 4; 1574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int c : 28; 1584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char s1; 1594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char s2; 1604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char s3; 1614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar} s16; 1624967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(s16,8) 1634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma pack (16) 1654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct { 1664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int __attribute__((packed)) a; 1674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int __attribute__((packed)) b : 4; 1684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int __attribute__((packed)) c : 32; 1694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar} s17; 1704967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(s17,12) 1714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma pack (16) 1734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct { 1744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int __attribute__((aligned(8))) a; 1754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int __attribute__((aligned(8))) b : 4; 1764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int __attribute__((aligned(8))) c : 32; 1774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar} s18; 1784967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(s18,24) 1794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma pack (16) 1814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct { 1824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int __attribute__((aligned(1))) a; 1834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int __attribute__((aligned(1))) b : 4; 1844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int __attribute__((aligned(1))) c : 32; 1854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar} s19; 1864967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(s19,12) 1874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma pack (1) 1894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct __attribute__((aligned(8))) { 1904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int a; 1914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int b : 4; 1924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int c : 32; 1934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar} s20; 1944967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(s20,16) 1954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma pack (2) 1974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct { 1984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int __attribute__((aligned(8))) a; 1994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int __attribute__((aligned(8))) b : 4; 2004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int __attribute__((aligned(8))) c : 32; 2014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar} s21; 2024967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(s21,10) 203