blob: e9af4915ad8c1f102f784d100943fc5a237be6f4 [file] [log] [blame]
/* { dg-do run } */
/* { dg-options "-O" } */
const int BIG_ENDIAN_P = (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__);
struct T1 {
unsigned char p[2];
unsigned short a;
unsigned int z;
} __attribute__((__aligned__(8)));
struct T2 {
unsigned short p;
unsigned short a;
unsigned int z;
} __attribute__((__aligned__(8)));
#define vc (unsigned char)0xaa
#define vi (unsigned int)0x12345678
struct T1 v1 = { { vc + !BIG_ENDIAN_P, vc + BIG_ENDIAN_P }, vc, vi };
struct T2 v2 = { (vc << 8) | (vc - 1), vc, vi };
void f (void) {
if (0
|| v1.p[!BIG_ENDIAN_P] != v2.p >> 8
|| v1.a != v2.a
|| ((v1.z ^ v2.z) & 0xff00ff00) != 0
|| ((v1.z ^ v2.z) & 0x00ff00ff) != 0)
__builtin_abort ();
}
int main () {
if (sizeof (short) != 2)
return 0;
f ();
return 0;
}