1 /* PR rtl-optimization/23561 */
2 
3 struct A
4 {
5   char a1[1];
6   char a2[5];
7   char a3[1];
8   char a4[2048 - 7];
9 } a;
10 
11 typedef __SIZE_TYPE__ size_t;
12 extern void *memset (void *, int, size_t);
13 extern void *memcpy (void *, const void *, size_t);
14 extern int memcmp (const void *, const void *, size_t);
15 extern void abort (void);
16 
17 void
bar(struct A * x)18 bar (struct A *x)
19 {
20   size_t i;
21   if (memcmp (x, "\1HELLO\1", sizeof "\1HELLO\1"))
22     abort ();
23   for (i = 0; i < sizeof (x->a4); i++)
24     if (x->a4[i])
25       abort ();
26 }
27 
28 int
foo(void)29 foo (void)
30 {
31   memset (&a, 0, sizeof (a));
32   a.a1[0] = 1;
33   memcpy (a.a2, "HELLO", sizeof "HELLO");
34   a.a3[0] = 1;
35   bar (&a);
36   return 0;
37 }
38 
39 int
main(void)40 main (void)
41 {
42   foo ();
43   return 0;
44 }
45