From 5a7a0b7bf98b702f8caf3e599e6eeb6631a50680 Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Sun, 6 Apr 2003 03:16:20 +0000 Subject: [PATCH] * 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. --- gas/ChangeLog | 7 +++++++ gas/config/tc-mips.c | 12 +++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) 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) { -- 2.30.2