This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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?


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]