]> gcc.gnu.org Git - gcc.git/commitdiff
pa.h (EXTRA_CONSTRAINT, case 'S'): Do not accept CONSTANTP if TARGET_LONG_CALLS.
authorJeff Law <law@gcc.gnu.org>
Tue, 16 Mar 1993 01:50:54 +0000 (18:50 -0700)
committerJeff Law <law@gcc.gnu.org>
Tue, 16 Mar 1993 01:50:54 +0000 (18:50 -0700)
* 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

index c4acb3d98d6fbc2ed68fc95c7cb7a222a3744f23..e50ce45e34c00a115341b889f2e0064955ae813b 100644 (file)
@@ -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
 \f
 /* GO_IF_LEGITIMATE_ADDRESS recognizes an RTL expression
This page took 0.072938 seconds and 5 git commands to generate.