On Thu, Jun 10, 2004 at 11:39:25AM -0400, Tom Lane wrote:
> Nonsense. C99 6.7.2.1:
>
> A pointer to a union object, suitably converted, points to
> each of its members (or if a member is a bit-field, then to
> the unit in which it resides), and vice versa.
>
> It does say that the results of fetching a union member other than
> the one last stored to are implementation-dependent, but not that
> the implementation can choose to put them in different places.
I stand corrected. Perhaps this is something that changed in C99 because
too many programs used this trick, or because enough platforms supported
it.
Note, however, that this is about pointers to unions (and ``suitably
converted,'' whatever that means; there are cases where pointer type
conversions may involve the addition or subtraction of an offset, so there
are situations where you need to be careful about how exactly you convert
your pointers). The code we're talking about had a union object, but no
pointers. So the part about registerization still holds.
Jeroen