On 2015-03-11 14:27:25 +0100, Robbert Krebbers wrote: > But what about "long long" on 32 bits machines. For example: > > union { > long long a; > struct { char b1; long long b2; } b; > } u; > > Will GCC perform similar optimizations as for the case of big structs? I > tried to play around with long long in Martin's example, but failed to > trigger "unexpected" behaviors in GCC.
I've not tried, but how about something like: struct S { long a, b, c, d; }; union U { struct S a; struct { char b1; struct S b2; } b; }; u.b.b2 = u.a; or: u.a = u.b.b2; IMHO, struct S should be large enough to avoid using registers as a temporary area (just in case...). -- Vincent Lefèvre <vinc...@vinc17.net> - Web: <https://www.vinc17.net/> 100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/> Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)