/* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-esra-details" } */

struct blah
{
  char a[4];
};

struct str
{
  struct blah b1;
  char x;
};

struct val
{
  char y;
  struct blah b2;
};

union U
{
  struct str str;
  struct val val;
};


extern struct blah e_b1, e_b2;
extern union U *e_u;

int foo (int b)
{
  union U u;

  u.str.b1 = e_b1;
  u.val.b2 = e_b2;
  u.str.b1.a[3] = 0;

  *e_u = u;
}

/* Epiphany has struct alignment/padding that avoids the overlap of
   str.b1 and val.b2.  */
/* { dg-final { scan-tree-dump-times "Created a replacement" 0 "esra" { target { ! "epiphany-*-*" } } } } */
