* config/tc-mips.c (HAVE_64BIT_ADDRESS_CONSTANTS): New.

(macro): Use new macro to decide whether to emit constant address
as 32 or 64 bits if addresses are 32-bit wide but registers are
64-bit wide.
This commit is contained in:
Alexandre Oliva 2003-04-06 03:16:20 +00:00
parent 43bd9a9e02
commit 5a7a0b7bf9
2 changed files with 16 additions and 3 deletions

View File

@ -1,3 +1,10 @@
2003-04-06 Chris Demetriou <cgd@broadcom.com>
* config/tc-mips.c (HAVE_64BIT_ADDRESS_CONSTANTS): New.
(macro): Use new macro to decide whether to emit constant address
as 32 or 64 bits if addresses are 32-bit wide but registers are
64-bit wide.
2003-04-05 Stephane Carrez <stcarrez@nerim.fr>
* config/tc-m68hc11.c (M6811_OP_CALL_ADDR): New internal define.

View File

@ -294,6 +294,8 @@ static int mips_32bitmode = 0;
&& mips_pic != EMBEDDED_PIC))
#define HAVE_64BIT_ADDRESSES (! HAVE_32BIT_ADDRESSES)
#define HAVE_64BIT_ADDRESS_CONSTANTS (HAVE_64BIT_ADDRESSES \
|| HAVE_64BIT_GPRS)
/* Return true if the given CPU supports the MIPS16 ASE. */
#define CPU_HAS_MIPS16(cpu) \
@ -5845,9 +5847,10 @@ macro (ip)
probably attempt to generate 64-bit constants more
efficiently in general.
*/
if (HAVE_64BIT_ADDRESSES
&& !(offset_expr.X_op == O_constant
&& IS_SEXT_32BIT_NUM (offset_expr.X_add_number + 0x8000)))
if ((offset_expr.X_op != O_constant && HAVE_64BIT_ADDRESSES)
|| (offset_expr.X_op == O_constant
&& !IS_SEXT_32BIT_NUM (offset_expr.X_add_number)
&& HAVE_64BIT_ADDRESS_CONSTANTS))
{
p = NULL;
@ -5894,6 +5897,9 @@ macro (ip)
return;
}
else if (offset_expr.X_op == O_constant
&& !IS_SEXT_32BIT_NUM (offset_expr.X_add_number))
as_bad (_("load/store address overflow (max 32 bits)"));
if (breg == 0)
{