From: Richard Stallman Date: Sat, 16 May 1992 19:40:17 +0000 (+0000) Subject: *** empty log message *** X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b8168f0d34366808143d0f0365243d0a13e520eb;p=gcc.git *** empty log message *** From-SVN: r998 --- diff --git a/gcc/config/ns32k/ns32k.h b/gcc/config/ns32k/ns32k.h index 07fc88206ed..129163820ac 100644 --- a/gcc/config/ns32k/ns32k.h +++ b/gcc/config/ns32k/ns32k.h @@ -830,7 +830,17 @@ __transfer_from_trampoline () \ || (GET_CODE (X) == PLUS \ && GET_CODE (XEXP (X, 0)) == REG \ && REG_OK_FOR_BASE_P (XEXP (X, 0)) \ - && CONSTANT_ADDRESS_P (XEXP (X, 1)))) + && CONSTANT_ADDRESS_P (XEXP (X, 1)) \ + && (GET_CODE (X) != CONST_INT || NS32K_DISPLACEMENT_P (INTVAL (X))))) + +/* 1 if integer I will fit in a 4 byte displacement field. + Strictly speaking, we can't be sure that a symbol will fit this range. + But, in practice, it always will. */ + +#define NS32K_DISPLACEMENT(i) \ + (((i) <= 16777215 && (i) >= -16777216) \ + || ((TARGET_32532 || TARGET_32332) \ + && (i) <= 536870913 && (i) >= -536870912)) /* Check for frame pointer or stack pointer. */ #define MEM_REG(X) \ diff --git a/gcc/config/ns32k/ns32k.md b/gcc/config/ns32k/ns32k.md index 107ad41d5e5..4fcfe780fd5 100644 --- a/gcc/config/ns32k/ns32k.md +++ b/gcc/config/ns32k/ns32k.md @@ -833,10 +833,10 @@ if (which_alternative == 1) { int i = INTVAL (operands[2]); - if ( i < 0x40000000 && i >= -0x40000000 ) - return \"addr %c2(%1),%0\"; + if (NS32K_DISPLACEMENT_P (i)) + return \"addr %c2(%1),%0\"; else - return \"movd %1,%0\;addd %2,%0\"; + return \"movd %1,%0\;addd %2,%0\"; } if (GET_CODE (operands[2]) == CONST_INT) {