On Tue, Aug 06, 2002 at 01:33:33PM -0700, Mark Mitchell wrote:
> So what do we do? Personally I'm for fixing the bug.
Blech. I don't like that we broke the C ABI, but I'm not sure I like
breaking it again in the name of fixing it, some two years later.
I guess the fact that nobody noticed until now suggests that maybe
the problem isn't very common, which makes either decision less
important.
If we *do* want to fix it, we need to look everywhere. For example,
place_union_field gives the union the alignment of the type of the bit
field in the PCC_BITFIELD_TYPE_MATTERS case. So, I think a union with
a long long bit field will get 8-byte aligned, which is weird.
And place_field gates the alignment by maximum_field_alignment -- but
not by desired_field_alignment. Again, in the PCC_BITFIELD_TYPE_MATTERS
case, which is the usual case on x86.
This worked for me and IMHO shouldn't make a difference anywhere but
on IA-32 (since ADJUST_FIELD_ALIGN is defined on IA-32 and PPC only
and on PPC it only changes something if the field's type is DFmode,
but bitfields cannot have DFmode TYPE_MODE).