(RETURN_IN_MEMORY): Do nothing for structs and unions.
authorRichard Stallman <rms@gnu.org>
Sat, 13 Jun 1992 20:40:10 +0000 (20:40 +0000)
committerRichard Stallman <rms@gnu.org>
Sat, 13 Jun 1992 20:40:10 +0000 (20:40 +0000)
(EXTRA_CONSTRAINT): During reload, accept pseudo reg for Q.

From-SVN: r1199

gcc/config/sparc/sparc.h

index 4e65e67c18698141827d1c2478beafea61e526ee..c9da4b79b82610ca860f1f96c1dda91ae2a5ee25 100644 (file)
@@ -1059,16 +1059,19 @@ extern union tree_node *current_function_decl;
 #define REG_OK_FOR_BASE_P(X) (((unsigned) REGNO (X)) - 32 >= 32 && REGNO (X) != 0)
 
 #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) : 0)))
+  ((C) == 'Q'                                          \
+   ? ((GET_CODE (OP) == MEM                            \
+       && memory_address_p (GET_MODE (OP), XEXP (OP, 0))       \
+       && ! symbolic_memory_operand (OP, VOIDmode))    \
+      || (reload_in_progress && GET_CODE (OP) == REG   \
+         && REGNO (OP) >= FIRST_PSEUDO_REGISTER))      \
+   : (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)) \
+   : 0)
 
 #else