On Wed, Jul 8, 2015 at 12:51 PM, Alan Lawrence <alan.lawre...@arm.com> wrote: > 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 !)...
Yeah, me neither - but I'm trying to at least make sure it doesn't get worse ;) Richard. > --Alan >