9.10.22 transparent_union
This attribute, attached to a function parameter which is a
union
, means that the corresponding argument may have the type of
any union member, but the argument is passed as if its type were that of the first union
member. The argument is passed to the function using the calling conventions of the
first member of the transparent union, not the calling conventions of the union itself.
All members of the union must have the same machine representation; this is necessary
for this argument passing to work properly.