From: Alexandre Oliva Date: Sun, 6 Apr 2003 03:16:20 +0000 (+0000) Subject: * config/tc-mips.c (HAVE_64BIT_ADDRESS_CONSTANTS): New. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5a7a0b7bf98b702f8caf3e599e6eeb6631a50680;p=binutils-gdb.git * 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. --- diff --git a/gas/ChangeLog b/gas/ChangeLog index dde3c48dda8..b4183d2ede5 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,10 @@ +2003-04-06 Chris Demetriou + + * 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 * config/tc-m68hc11.c (M6811_OP_CALL_ADDR): New internal define. diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index 2e114f4f542..e07dde39f2f 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -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) {