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