/* { 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-*-*" } } } } */ /* { dg-final { cleanup-tree-dump "esra" } } */