This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: IA64 bootstrap problem for Ada
Jim Wilson <wilson@specifixinc.com> writes:
> Zack Weinberg wrote:
>> This is a somewhat new thing. It isn't inconsistent. It means the
>> mode has 96 bits of value but takes up 16*BITS_PER_UNIT (128) bits of
>> storage. Think TYPE_SIZE versus TYPE_PRECISION. BImode has been like
>> this since its invention. XFmode being like this is new. Other modes
>> are likely to take advantage of this in the future.
>
> I think it is misleading to mention BImode. BImode is used in only
> special restricted circumstances. It is never written into object
> files for instance, and does not correspond to any C language type.
> Also, BImode is a different special case. BImode has a fractional
> size, 0.125 bytes, and we can't represent fractional byte sizes, so it
> was rounded up to 1 byte.
That is currently the case, but I know Richard Henderson was talking
about using BImode for C99 _Bool, and related types in other
languages. Which probably requires fixing all the same bugs as the
XFmode stuff does.
> The XFmode case is very different. You have changed the meaning of
> GET_MODE_BITSIZE. It no longer holds the bit size, it holds the
> precision. This change was not announced very well, and hasn't been
> documented in the manual. This change has created lots of latent bugs
> for the IA-64 port, and I think you should be on the hook for helping
> to get them fixed.
To be honest, I thought the meaning of GET_MODE_BITSIZE was *already*
the precision, and it just happened that we had no types with padding
bits to date. (I thought this because GET_MODE_BITSIZE is compared
against TYPE_PRECISION in several places.)
I am happy to help fix bugs, as I said in the earlier message.
zw