From ec241c19a4c26c936bb2c4f812d476b5d3b2d8e0 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Mon, 15 Mar 1993 18:50:54 -0700 Subject: [PATCH] pa.h (EXTRA_CONSTRAINT, case 'S'): Do not accept CONSTANTP if TARGET_LONG_CALLS. * pa.h (EXTRA_CONSTRAINT, case 'S'): Do not accept CONSTANTP if TARGET_LONG_CALLS. * pa.h (EXTRA_CONSTRAINT): Merge strict and non-strict variants. Delete 'R' constraint. From-SVN: r3751 --- gcc/config/pa/pa.h | 53 +++++++++++++++++++++------------------------- 1 file changed, 24 insertions(+), 29 deletions(-) diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h index c4acb3d98d6f..e50ce45e34c0 100644 --- a/gcc/config/pa/pa.h +++ b/gcc/config/pa/pa.h @@ -1050,12 +1050,35 @@ extern union tree_node *current_function_decl; these things in insns and then not re-recognize the insns, causing constrain_operands to fail. - `R' handles the LO_SUM which can be an address for `Q'. + `R' is unused. `S' handles constraints for calls. `T' is for fp load and store addresses.*/ +#define EXTRA_CONSTRAINT(OP, C) \ + ((C) == 'Q' ? \ + ((GET_CODE (OP) == MEM \ + && memory_address_p (GET_MODE (OP), XEXP (OP, 0)) \ + && ! symbolic_memory_operand (OP, VOIDmode)) \ + || (GET_CODE (OP) == REG \ + && REGNO (OP) >= FIRST_PSEUDO_REGISTER \ + && reg_renumber[REGNO (OP)] < 0)) \ + : ((C) == 'S' ? \ + ((CONSTANT_P (OP) && ! TARGET_LONG_CALLS) \ + || (reload_in_progress \ + ? strict_memory_address_p (Pmode, OP) \ + : memory_address_p (Pmode, OP)) \ + || (reload_in_progress \ + && GET_CODE (OP) == REG \ + && reg_renumber[REGNO (OP)] > 0)) \ + : ((C) == 'T' ? \ + ((GET_CODE (OP) == MEM \ + && short_memory_operand (OP, VOIDmode)) \ + || (GET_CODE (OP) == REG \ + && REGNO (OP) >= FIRST_PSEUDO_REGISTER \ + && reg_renumber[REGNO (OP)] < 0)) : 0))) + #ifndef REG_OK_STRICT /* Nonzero if X is a hard reg that can be used as an index @@ -1067,20 +1090,6 @@ extern union tree_node *current_function_decl; #define REG_OK_FOR_BASE_P(X) \ (REGNO (X) && (REGNO (X) < 32 || REGNO (X) >= FIRST_PSEUDO_REGISTER)) -#define EXTRA_CONSTRAINT(OP, C) \ - ((C) == 'Q' ? \ - ((GET_CODE (OP) == MEM \ - && memory_address_p (GET_MODE (OP), XEXP (OP, 0)) \ - && ! symbolic_memory_operand (OP, VOIDmode))) \ - : ((C) == 'R' ? \ - (GET_CODE (OP) == LO_SUM \ - && GET_CODE (XEXP (OP, 0)) == REG \ - && REG_OK_FOR_BASE_P (XEXP (OP, 0))) \ - : ((C) == 'S' \ - ? CONSTANT_P (OP) || memory_address_p (Pmode, OP)\ - : ((C) == 'T' ? short_memory_operand (OP, VOIDmode) : 0))))\ - - #else /* Nonzero if X is a hard reg that can be used as an index. */ @@ -1088,20 +1097,6 @@ extern union tree_node *current_function_decl; /* Nonzero if X is a hard reg that can be used as a base reg. */ #define REG_OK_FOR_BASE_P(X) REGNO_OK_FOR_BASE_P (REGNO (X)) -#define EXTRA_CONSTRAINT(OP, C) \ - (((C) == 'Q' || (C) == 'T') ? \ - (GET_CODE (OP) == REG ? \ - (REGNO (OP) >= FIRST_PSEUDO_REGISTER \ - && reg_renumber[REGNO (OP)] < 0) \ - : GET_CODE (OP) == MEM) \ - : ((C) == 'R' ? \ - (GET_CODE (OP) == LO_SUM \ - && GET_CODE (XEXP (OP, 0)) == REG \ - && REG_OK_FOR_BASE_P (XEXP (OP, 0))) \ - : (CONSTANT_P (OP) \ - || (GET_CODE (OP) == REG && reg_renumber[REGNO (OP)] > 0)\ - || strict_memory_address_p (Pmode, OP)))) - #endif /* GO_IF_LEGITIMATE_ADDRESS recognizes an RTL expression -- 2.43.5