IA64 bootstrap problem for Ada

Richard Kenner kenner@vlsi1.ultra.nyu.edu
Thu Oct 30 21:13:00 GMT 2003


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?



More information about the Gcc mailing list