1 /* PR rtl-optimization/63843 */
2 
3 static inline __attribute__ ((always_inline))
foo(unsigned short v)4 unsigned short foo (unsigned short v)
5 {
6   return (v << 8) | (v >> 8);
7 }
8 
9 unsigned short __attribute__ ((noinline, noclone, hot))
bar(unsigned char * x)10 bar (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 
21 int
main()22 main ()
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