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
      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
      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
      40  main (void)
      41  {
      42    foo ();
      43    return 0;
      44  }