1/* PR tree-optimization/65369 */
2
3static const char data[] =
4  "12345678901234567890123456789012345678901234567890"
5  "123456789012345678901234567890";
6
7__attribute__ ((noinline))
8static void foo (const unsigned int *buf)
9{
10  if (__builtin_memcmp (buf, data, 64))
11    __builtin_abort ();
12}
13
14__attribute__ ((noinline))
15static void bar (const unsigned char *block)
16{
17  unsigned int buf[16];
18  __builtin_memcpy (buf +  0, block +  0, 4);
19  __builtin_memcpy (buf +  1, block +  4, 4);
20  __builtin_memcpy (buf +  2, block +  8, 4);
21  __builtin_memcpy (buf +  3, block + 12, 4);
22  __builtin_memcpy (buf +  4, block + 16, 4);
23  __builtin_memcpy (buf +  5, block + 20, 4);
24  __builtin_memcpy (buf +  6, block + 24, 4);
25  __builtin_memcpy (buf +  7, block + 28, 4);
26  __builtin_memcpy (buf +  8, block + 32, 4);
27  __builtin_memcpy (buf +  9, block + 36, 4);
28  __builtin_memcpy (buf + 10, block + 40, 4);
29  __builtin_memcpy (buf + 11, block + 44, 4);
30  __builtin_memcpy (buf + 12, block + 48, 4);
31  __builtin_memcpy (buf + 13, block + 52, 4);
32  __builtin_memcpy (buf + 14, block + 56, 4);
33  __builtin_memcpy (buf + 15, block + 60, 4);
34  foo (buf);
35}
36
37int
38main ()
39{
40  unsigned char input[sizeof data + 16] __attribute__((aligned (16)));
41  __builtin_memset (input, 0, sizeof input);
42  __builtin_memcpy (input + 1, data, sizeof data);
43  bar (input + 1);
44  return 0;
45}
46