aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1992-06-13 20:40:10 +0000
committerRichard Stallman <rms@gnu.org>1992-06-13 20:40:10 +0000
commitdb5e449c5e7cf20de09adb88e1d0eb22e9def100 (patch)
tree11a98a71acf8949a565bd449723ba9a6db928a18
parent48b70616007696918b16f336d7d39275c5625903 (diff)
downloadgcc-db5e449c5e7cf20de09adb88e1d0eb22e9def100.zip
gcc-db5e449c5e7cf20de09adb88e1d0eb22e9def100.tar.gz
gcc-db5e449c5e7cf20de09adb88e1d0eb22e9def100.tar.bz2
(RETURN_IN_MEMORY): Do nothing for structs and unions.
(EXTRA_CONSTRAINT): During reload, accept pseudo reg for Q. From-SVN: r1199
-rw-r--r--gcc/config/sparc/sparc.h23
1 files changed, 13 insertions, 10 deletions
diff --git a/gcc/config/sparc/sparc.h b/gcc/config/sparc/sparc.h
index 4e65e67..c9da4b7 100644
--- a/gcc/config/sparc/sparc.h
+++ b/gcc/config/sparc/sparc.h
@@ -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