1a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// 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// RUN: %clang_cc1 %s -fsyntax-only -verify -triple=x86_64-scei-ps4 68e8fb3be5bd78f0564444eca02b404566a5f3b5dAndy Gibbs// expected-no-diagnostics 74967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#include <stddef.h> 84bd998bbc228915d2b9cae5b67879de48940d05eEli Friedman 94967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#define CHECK_SIZE(kind, name, size) \ 104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar extern int name##_1[sizeof(kind name) == size ? 1 : -1]; 114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#define CHECK_ALIGN(kind, name, size) \ 124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar extern int name##_2[__alignof(kind name) == size ? 1 : -1]; 134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#define CHECK_OFFSET(kind, name, member, offset) \ 144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar extern int name##_3[offsetof(kind name, member) == offset ? 1 : -1]; 154bd998bbc228915d2b9cae5b67879de48940d05eEli Friedman 164bd998bbc228915d2b9cae5b67879de48940d05eEli Friedman// Zero-width bit-fields 174bd998bbc228915d2b9cae5b67879de48940d05eEli Friedmanstruct a {char x; int : 0; char y;}; 184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#if defined(__arm__) || defined(__aarch64__) 194967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(struct, a, 8) 204967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_ALIGN(struct, a, 4) 214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#else 224bd998bbc228915d2b9cae5b67879de48940d05eEli FriedmanCHECK_SIZE(struct, a, 5) 234bd998bbc228915d2b9cae5b67879de48940d05eEli FriedmanCHECK_ALIGN(struct, a, 1) 244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#endif 254bd998bbc228915d2b9cae5b67879de48940d05eEli Friedman 26651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// Zero-width bit-fields with packed 27651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct __attribute__((packed)) a2 { short x : 9; char : 0; int y : 17; }; 28651f13cea278ec967336033dd032faef0e9fc2ecStephen HinesCHECK_SIZE(struct, a2, 5) 29651f13cea278ec967336033dd032faef0e9fc2ecStephen HinesCHECK_ALIGN(struct, a2, 1) 30651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 31651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// Zero-width bit-fields at the end of packed struct 32651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct __attribute__((packed)) a3 { short x : 9; int : 0; }; 334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#if defined(__arm__) || defined(__aarch64__) 344967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(struct, a3, 4) 354967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_ALIGN(struct, a3, 4) 364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#else 37651f13cea278ec967336033dd032faef0e9fc2ecStephen HinesCHECK_SIZE(struct, a3, 4) 38651f13cea278ec967336033dd032faef0e9fc2ecStephen HinesCHECK_ALIGN(struct, a3, 1) 394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#endif 40651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 41651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// For comparison, non-zero-width bit-fields at the end of packed struct 42651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesstruct __attribute__((packed)) a4 { short x : 9; int : 1; }; 43651f13cea278ec967336033dd032faef0e9fc2ecStephen HinesCHECK_SIZE(struct, a4, 2) 44651f13cea278ec967336033dd032faef0e9fc2ecStephen HinesCHECK_ALIGN(struct, a4, 1) 45651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 464bd998bbc228915d2b9cae5b67879de48940d05eEli Friedmanunion b {char x; int : 0; char y;}; 474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#if defined(__arm__) || defined(__aarch64__) 484967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(union, b, 4) 494967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_ALIGN(union, b, 4) 504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#else 514bd998bbc228915d2b9cae5b67879de48940d05eEli FriedmanCHECK_SIZE(union, b, 1) 524bd998bbc228915d2b9cae5b67879de48940d05eEli FriedmanCHECK_ALIGN(union, b, 1) 534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#endif 544bd998bbc228915d2b9cae5b67879de48940d05eEli Friedman 554bd998bbc228915d2b9cae5b67879de48940d05eEli Friedman// Unnamed bit-field align 564bd998bbc228915d2b9cae5b67879de48940d05eEli Friedmanstruct c {char x; int : 20;}; 574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#if defined(__arm__) || defined(__aarch64__) 584967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(struct, c, 4) 594967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_ALIGN(struct, c, 4) 604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#else 614bd998bbc228915d2b9cae5b67879de48940d05eEli FriedmanCHECK_SIZE(struct, c, 4) 624bd998bbc228915d2b9cae5b67879de48940d05eEli FriedmanCHECK_ALIGN(struct, c, 1) 634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#endif 644bd998bbc228915d2b9cae5b67879de48940d05eEli Friedman 654bd998bbc228915d2b9cae5b67879de48940d05eEli Friedmanunion d {char x; int : 20;}; 664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#if defined(__arm__) || defined(__aarch64__) 674967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(union, d, 4) 684967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_ALIGN(union, d, 4) 694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#else 704bd998bbc228915d2b9cae5b67879de48940d05eEli FriedmanCHECK_SIZE(union, d, 3) 714bd998bbc228915d2b9cae5b67879de48940d05eEli FriedmanCHECK_ALIGN(union, d, 1) 724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#endif 734bd998bbc228915d2b9cae5b67879de48940d05eEli Friedman 744bd998bbc228915d2b9cae5b67879de48940d05eEli Friedman// Bit-field packing 754bd998bbc228915d2b9cae5b67879de48940d05eEli Friedmanstruct __attribute__((packed)) e {int x : 4, y : 30, z : 30;}; 764bd998bbc228915d2b9cae5b67879de48940d05eEli FriedmanCHECK_SIZE(struct, e, 8) 774bd998bbc228915d2b9cae5b67879de48940d05eEli FriedmanCHECK_ALIGN(struct, e, 1) 784bd998bbc228915d2b9cae5b67879de48940d05eEli Friedman 794bd998bbc228915d2b9cae5b67879de48940d05eEli Friedman// Alignment on bit-fields 804bd998bbc228915d2b9cae5b67879de48940d05eEli Friedmanstruct f {__attribute((aligned(8))) int x : 30, y : 30, z : 30;}; 814bd998bbc228915d2b9cae5b67879de48940d05eEli FriedmanCHECK_SIZE(struct, f, 24) 824bd998bbc228915d2b9cae5b67879de48940d05eEli FriedmanCHECK_ALIGN(struct, f, 8) 8384b0316f720bd089d87acb21ec0002b2da33e6c9Daniel Dunbar 8484b0316f720bd089d87acb21ec0002b2da33e6c9Daniel Dunbar// Large structure (overflows i32, in bits). 8584b0316f720bd089d87acb21ec0002b2da33e6c9Daniel Dunbarstruct s0 { 8684b0316f720bd089d87acb21ec0002b2da33e6c9Daniel Dunbar char a[0x32100000]; 8784b0316f720bd089d87acb21ec0002b2da33e6c9Daniel Dunbar int x:30, y:30; 8884b0316f720bd089d87acb21ec0002b2da33e6c9Daniel Dunbar}; 8984b0316f720bd089d87acb21ec0002b2da33e6c9Daniel Dunbar 9084b0316f720bd089d87acb21ec0002b2da33e6c9Daniel DunbarCHECK_SIZE(struct, s0, 0x32100008) 9184b0316f720bd089d87acb21ec0002b2da33e6c9Daniel DunbarCHECK_ALIGN(struct, s0, 4) 9284b0316f720bd089d87acb21ec0002b2da33e6c9Daniel Dunbar 934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// Bit-field with explicit align bigger than normal. 944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct g0 { 954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char a; 964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __attribute__((aligned(16))) int b : 1; 974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char c; 984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar}; 994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#if defined(__ORBIS__) 1014967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(struct, g0, 16); 1024967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_ALIGN(struct, g0, 16); 1034967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_OFFSET(struct, g0, c, 2); 1044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#else 1054967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(struct, g0, 32); 1064967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_ALIGN(struct, g0, 16); 1074967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_OFFSET(struct, g0, c, 17); 1084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#endif 1094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// Bit-field with explicit align smaller than normal. 1114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct g1 { 1124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char a; 1134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __attribute__((aligned(2))) int b : 1; 1144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char c; 1154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar}; 1164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1174967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(struct, g1, 4); 1184967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_ALIGN(struct, g1, 4); 1194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#if defined(__ORBIS__) 1204967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_OFFSET(struct, g1, c, 2); 1214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#else 1224967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_OFFSET(struct, g1, c, 3); 1234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#endif 1244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// Same as above but without explicit align. 1264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct g2 { 1274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char a; 1284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int b : 1; 1294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char c; 1304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar}; 1314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1324967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(struct, g2, 4); 1334967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_ALIGN(struct, g2, 4); 1344967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_OFFSET(struct, g2, c, 2); 1354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// Explicit attribute align on bit-field has precedence over packed attribute 1374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// applied too the struct. 1384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct __attribute__((packed)) g3 { 1394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char a; 1404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __attribute__((aligned(16))) int b : 1; 1414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char c; 1424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar}; 1434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1444967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_ALIGN(struct, g3, 16); 1454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#if defined(__ORBIS__) 1464967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(struct, g3, 16); 1474967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_OFFSET(struct, g3, c, 2); 1484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#else 1494967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(struct, g3, 32); 1504967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_OFFSET(struct, g3, c, 17); 1514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#endif 1524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct __attribute__((packed)) g4 { 1544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char a; 1554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __attribute__((aligned(2))) int b : 1; 1564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char c; 1574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar}; 1584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1594967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(struct, g4, 4); 1604967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_ALIGN(struct, g4, 2); 1614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#if defined(__ORBIS__) 1624967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_OFFSET(struct, g4, c, 2); 1634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#else 1644967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_OFFSET(struct, g4, c, 3); 1654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#endif 1664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct g5 { 1684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char : 1; 1694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __attribute__((aligned(1))) int n : 24; 1704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar}; 1714967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(struct, g5, 4); 1724967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_ALIGN(struct, g5, 4); 1734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct __attribute__((packed)) g6 { 1754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char : 1; 1764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __attribute__((aligned(1))) int n : 24; 1774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar}; 1784967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(struct, g6, 4); 1794967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_ALIGN(struct, g6, 1); 1804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct g7 { 1824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char : 1; 1834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __attribute__((aligned(1))) int n : 25; 1844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar}; 1854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#if defined(__ORBIS__) 1864967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(struct, g7, 4); 1874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#else 1884967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(struct, g7, 8); 1894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#endif 1904967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_ALIGN(struct, g7, 4); 1914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct __attribute__((packed)) g8 { 1934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char : 1; 1944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __attribute__((aligned(1))) int n : 25; 1954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar}; 1964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#if defined(__ORBIS__) 1974967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(struct, g8, 4); 1984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#else 1994967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(struct, g8, 5); 2004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#endif 2014967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_ALIGN(struct, g8, 1); 2024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 2034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct g9 { 2044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __attribute__((aligned(1))) char a : 2, b : 2, c : 2, d : 2, e : 2; 2054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int i; 2064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar}; 2074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#if defined(__ORBIS__) 2084967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(struct, g9, 8); 2094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#else 2104967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(struct, g9, 12); 2114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#endif 2124967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_ALIGN(struct, g9, 4); 2134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 2144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct __attribute__((packed)) g10 { 2154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __attribute__((aligned(1))) char a : 2, b : 2, c : 2, d : 2, e : 2; 2164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int i; 2174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar}; 2184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#if defined(__ORBIS__) 2194967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(struct, g10, 6); 2204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#else 2214967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(struct, g10, 9); 2224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#endif 2234967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_ALIGN(struct, g10, 1); 2244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 2254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct g11 { 2264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char a; 2274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __attribute__((aligned(1))) long long b : 62; 2284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char c; 2294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar}; 2304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#if defined(__arm__) || defined(__aarch64__) || defined(__x86_64__) 2314967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(struct, g11, 24); 2324967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_ALIGN(struct, g11, 8); 2334967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_OFFSET(struct, g11, c, 16); 2344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#else 2354967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(struct, g11, 16); 2364967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_ALIGN(struct, g11, 4); 2374967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_OFFSET(struct, g11, c, 12); 2384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#endif 2394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 2404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct __attribute__((packed)) g12 { 2414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char a; 2424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __attribute__((aligned(1))) long long b : 62; 2434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char c; 2444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar}; 2454967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(struct, g12, 10); 2464967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_ALIGN(struct, g12, 1); 2474967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_OFFSET(struct, g12, c, 9); 2484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 2494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct g13 { 2504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char a; 2514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __attribute__((aligned(1))) long long : 0; 2524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char c; 2534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar}; 2544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#if defined(__arm__) || defined(__aarch64__) 2554967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(struct, g13, 16); 2564967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_ALIGN(struct, g13, 8); 2574967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_OFFSET(struct, g13, c, 8); 2584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#elif defined(__x86_64__) 2594967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(struct, g13, 9); 2604967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_ALIGN(struct, g13, 1); 2614967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_OFFSET(struct, g13, c, 8); 2624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#else 2634967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(struct, g13, 5); 2644967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_ALIGN(struct, g13, 1); 2654967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_OFFSET(struct, g13, c, 4); 2664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#endif 2674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 2684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct __attribute__((packed)) g14 { 2694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char a; 2704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar __attribute__((aligned(1))) long long : 0; 2714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar char c; 2724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar}; 2734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#if defined(__arm__) || defined(__aarch64__) 2744967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(struct, g14, 16); 2754967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_ALIGN(struct, g14, 8); 2764967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_OFFSET(struct, g14, c, 8); 2774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#elif defined(__x86_64__) 2784967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(struct, g14, 9); 2794967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_ALIGN(struct, g14, 1); 2804967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_OFFSET(struct, g14, c, 8); 2814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#else 2824967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_SIZE(struct, g14, 5); 2834967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_ALIGN(struct, g14, 1); 2844967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarCHECK_OFFSET(struct, g14, c, 4); 2854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#endif 286