1/* PR rtl-optimization/63843 */ 2 3static inline __attribute__ ((always_inline)) 4unsigned short foo (unsigned short v) 5{ 6 return (v << 8) | (v >> 8); 7} 8 9unsigned short __attribute__ ((noinline, noclone, hot)) 10bar (unsigned char *x) 11{ 12 unsigned int a; 13 unsigned short b; 14 __builtin_memcpy (&a, &x[0], sizeof (a)); 15 a ^= 0x80808080U; 16 __builtin_memcpy (&x[0], &a, sizeof (a)); 17 __builtin_memcpy (&b, &x[2], sizeof (b)); 18 return foo (b); 19} 20 21int 22main () 23{ 24 unsigned char x[8] = { 0x01, 0x01, 0x01, 0x01 }; 25 if (__CHAR_BIT__ == 8 26 && sizeof (short) == 2 27 && sizeof (int) == 4 28 && bar (x) != 0x8181U) 29 __builtin_abort (); 30 return 0; 31} 32