/* Verify that structure return doesn't invoke memcpy on overlapping objects. */ extern void abort (void); struct S { char stuff[1024]; }; union U { struct { int space; struct S s; } a; struct { struct S s; int space; } b; }; struct S f(struct S *); void g(union U *); void main_test(void) { union U u; u.b.s = f(&u.a.s); u.a.s = f(&u.b.s); g(&u); }