aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>1993-04-04 18:07:08 -0600
committerJeff Law <law@gcc.gnu.org>1993-04-04 18:07:08 -0600
commit84721fbde7a0bc86a1e3b279293394829ba43746 (patch)
tree73d14f0d3248866b08ce2a734ed59388cf064889 /gcc
parent64a483047afac29c0c6dbf0b8855d39df2fbc176 (diff)
downloadgcc-84721fbde7a0bc86a1e3b279293394829ba43746.zip
gcc-84721fbde7a0bc86a1e3b279293394829ba43746.tar.gz
gcc-84721fbde7a0bc86a1e3b279293394829ba43746.tar.bz2
pa.h (EXTRA_CONSTRAINT): Refine 'T' constraint to not accept pseudos which did not get hard registers.
* pa.h (EXTRA_CONSTRAINT): Refine 'T' constraint to not accept pseudos which did not get hard registers. Do not use short_memory_operand. From-SVN: r4013
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/pa/pa.h9
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h
index 2a613a6..8a65f74 100644
--- a/gcc/config/pa/pa.h
+++ b/gcc/config/pa/pa.h
@@ -1095,7 +1095,7 @@ extern union tree_node *current_function_decl;
`S' handles constraints for calls.
- `T' is for fp load and store addresses.*/
+ `T' is for fp loads and stores. */
#define EXTRA_CONSTRAINT(OP, C) \
((C) == 'Q' ? \
(IS_RELOADING_PSEUDO_P (OP) \
@@ -1105,9 +1105,10 @@ extern union tree_node *current_function_decl;
&& memory_address_p (GET_MODE (OP), XEXP (OP, 0))\
&& ! symbolic_memory_operand (OP, VOIDmode))) \
: ((C) == 'T' ? \
- (IS_RELOADING_PSEUDO_P (OP) \
- || (GET_CODE (OP) == MEM \
- && short_memory_operand (OP, VOIDmode))) \
+ (GET_CODE (OP) == MEM \
+ /* Using DFmode forces only short displacements \
+ to be recognized as valid in reg+d addresses. */\
+ && memory_address_p (DFmode, XEXP (OP, 0))) \
: ((C) == 'S' ? \
((CONSTANT_P (OP) && ! TARGET_LONG_CALLS) \
|| (reload_in_progress \