This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
IA64 bootstrap problem for Ada
- From: kenner at vlsi1 dot ultra dot nyu dot edu (Richard Kenner)
- To: gcc at gcc dot gnu dot org
- Date: Thu, 30 Oct 03 15:25:36 EST
- Subject: IA64 bootstrap problem for Ada
I was looking into this and have no idea what the intent of the code is.
We seem to have a case where GET_MODE_BITSIZE (XFmode) is 96 bits, but
GET_MODE_SIZE (XFmode) is 16. These are inconsistent.
So when we call layout_type on a 96-bit type, it starts with TYPE_SIZE of
96 and TYPE_UNIT_SIZE of 16.
But GET_MODE_ALIGNMENT (XFmode) is 128 bits. So now it rounds up TYPE_SIZE
to 128.
Now Ada complains since it was told the size of the type is 96, not 128.
But I don't understand this whole thing.
What does it possibly mean to have a type with TYPE_SIZE not BITS_PER_UNIT
times TYPE_UNIT_SIZE? Isn't that a pretty fundamental invariant?
Similarly for GET_MODE_SIZE and GET_MODE_BITSIZE.
Then the alignment just confuses things more.
What's supposed to be going on here?