bug in recent function.c change
David S. Miller
davem@dm.cobaltmicro.com
Fri Oct 2 00:09:00 GMT 1998
Date: Thu, 01 Oct 1998 19:51:15 -0600
From: Jeffrey A Law <law@cygnus.com>
This change:
...
Is causing problems on the PA (and I suspect any other big endian machine).
Remove the BYTES_BIG_ENDIAN bits in the change, turns out that
store_bit_field and friends do this adjustment "for you". I ran into
learning about this amidst my subreg hacks... Take a look:
/* If OP0 is a register, BITPOS must count within a word.
But as we have it, it counts within whatever size OP0 now has.
On a bigendian machine, these are not the same, so convert. */
if (BYTES_BIG_ENDIAN
&& GET_CODE (op0) != MEM
&& unit > GET_MODE_BITSIZE (GET_MODE (op0)))
bitpos += unit - GET_MODE_BITSIZE (GET_MODE (op0));
All of the bit store and extraction parts of the compiler have loads
of inconsistancies about endianness, sizes, units, etc. and I plan on
cleaning this up someday.
Later,
David S. Miller
davem@dm.cobaltmicro.com
More information about the Gcc-bugs
mailing list