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]

PATCHES ARM: Fixes for PR 11183


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]