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