Richard Biener wrote:
On Wed, Jul 8, 2015 at 12:07 AM, Jeff Law <l...@redhat.com> wrote:
On 07/07/2015 06:37 AM, Alan Lawrence wrote:
[snip]
Fix native_interpret_real for HFmode floats on Bigendian with
UNITS_PER_WORD>=4
(with missing space)
OK with ChangeLog in proper form.
Err - but now offset can become negative? Shouldn't it rather error out
before as it requires at least 4 bytes for big-endian?
I don't think the offset can ever be negative; my reasoning is:
total_bytes = GET_MODE_SIZE (TYPE_MODE (type)) [set just before loop]
bitpos < total_bytes * BITS_PER_UNIT [condition of for loop]
byte = (bitpos / BITS_PER_UNIT) & 3 [first statement inside for loop]
==> byte < 3 && byte < total_bytes
==> byte < MIN (3, total_bytes)
==> byte <= MIN (3, total_bytes - 1)
That said - the whole thing looks it doesn't expect GET_MODE_SIZE < 4
and your "fix" is just very obfuscated (if it really is a fix).
So, please cleanup the thing properly instead or at least add a big fat
comment. There is the magic '3' in the line following yours as well.
Ok, I'll try to cleanup, I admit I'm not sure what all that code does
(particularly if UNITS_PER_WORD < 4 !)...
--Alan