/* pr60822.c from the execute part of the gcc torture tests. */ #include #ifdef __SDCC #pragma std_c99 #endif #include #include /* PR rtl-optimization/63843 */ #if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Bug #2874 static inline unsigned short foo (unsigned short v) { return (v << 8) | (v >> 8); } unsigned short bar (unsigned char *x) { unsigned int a; unsigned short b; memcpy (&a, &x[0], sizeof (a)); a ^= 0x80808080U; memcpy (&x[0], &a, sizeof (a)); memcpy (&b, &x[2], sizeof (b)); return foo (b); } #endif void testTortureExecute (void) { #if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Bug #2874 unsigned char x[8] = { 0x01, 0x01, 0x01, 0x01 }; if (CHAR_BIT == 8 && sizeof (short) == 2 && sizeof (int) == 4 && bar (x) != 0x8181U) ASSERT (0); return; #endif }