This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: C++ structure layout breakage
- To: wilson at cygnus dot com
- Subject: Re: C++ structure layout breakage
- From: kenner at vlsi1 dot ultra dot nyu dot edu (Richard Kenner)
- Date: Tue, 24 Oct 00 09:06:57 EDT
- Cc: gcc-patches at gcc dot gnu dot org
This was an attempt to fix purge_addressof problems. Along the way,
it was decided that store_bit_field should abort if given an FP mode
with no equivalent integer mode. This is wrong. FP modes are fine if
we are inserting a value that is exactly the same size as the field we
are inserting it into, and the field is aligned properly for the type.
Now it's coming back to me: I noticed this at the time and think I
actually pointed out that this could be made to work, but was trickier
than I cared to do and didn't think it was worth the trouble.
The testcase has a structure with one long double field, and there is
no 80-bit integral type. If we don't allow this structure into a
register, then we are accidentally changing the x86 ABI, and getting
less efficient code too.
I knew the code would be less efficient, but didn't think that was worth
bothering with. I hadn't realized the ABI implication.