struct A { void* q; short i; }; union U { char* p; struct A a; }; struct A foo(union U u) { struct A a = { 0, 0 }; a = u.a; return a; }