This is the mail archive of the gcc-patches@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] |
Oooh! Two bugs in one PR... The change_address bug was due to the fact that 1020 is a legal offset to an LDF instruction, but 1024 is not. Thus when we break the address into parts so that we can use LDR instructions we get an invalid offset. Fortunately, 1024 is a leagal offset for an LDR instruction. Telling change_address to validate against SImode fixes this. The second bug is a checking failure. When trying to find a register that contained zero, reload had identified the fact that a floating point register had zero in a subword of a floating point value. However, it isn't possible to subreg an FPA register, and the compiler was generating a consistency abort in the checking code. This can be rectified by defining CANNOT_CHANGE_MODE_CLASS. Although this failure also appears on the branch if checking is enabled, fixing the abort does not cause different code to be output. It seams sensible therefore not to apply the second patch to the branch. 2003-06-14 Richard Earnshaw <rearnsha@arm.com> PR target/11183 * arm.c (output_move_double): Pass SImode to adjust_address. 2003-06-14 Richard Earnshaw <rearnsha@arm.com> PR target/11183 * arm.h (CANNOT_CHANGE_MODE_CLASS): Define.
Attachment:
fpasubreg.patch
Description: fpasubreg.patch
Attachment:
dfoffset.patch
Description: dfoffset.patch
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |