diff options
author | Ulrich Weigand <uweigand@de.ibm.com> | 2002-08-14 10:04:51 +0000 |
---|---|---|
committer | Ulrich Weigand <uweigand@gcc.gnu.org> | 2002-08-14 10:04:51 +0000 |
commit | ccfc6cc8fa5ab66c0e2dede177aa5b1010523ffc (patch) | |
tree | f8955f2da7788407bd35a092c0a414ccd029de11 /gcc/local-alloc.c | |
parent | 72c41e5adc70750cee23e185d6cbadb3950a5b2d (diff) | |
download | gcc-ccfc6cc8fa5ab66c0e2dede177aa5b1010523ffc.zip gcc-ccfc6cc8fa5ab66c0e2dede177aa5b1010523ffc.tar.gz gcc-ccfc6cc8fa5ab66c0e2dede177aa5b1010523ffc.tar.bz2 |
reload.c (find_reloads): Handle constraint letters marked by EXTRA_ADDRESS_CONSTRAINT and...
* reload.c (find_reloads): Handle constraint letters marked by
EXTRA_ADDRESS_CONSTRAINT and EXTRA_MEMORY_CONSTRAINT.
(alternative_allows_memconst): Likewise.
* reload1.c (maybe_fix_stack_asms): Likewise.
* recog.c (asm_operand_ok, preprocess_constraints,
constrain_operands): Likewise.
* regclass.c (record_operand_costs, record_reg_classes): Likewise.
* local-alloc.c (block_alloc, requires_inout): Likewise.
* stmt.c (parse_output_constraint, parse_input_constraint): Likewise.
* defaults.h (EXTRA_MEMORY_CONSTRAINT): Provide a default.
(EXTRA_ADDRESS_CONSTRAINT): Likewise.
* doc/tm.texi: Document these two new target macros.
* config/s390/s390.c (s390_expand_plus_operand): Accept already
valid operands.
(q_constraint): New function.
config/s390/s390-protos.h (q_constraint): Declare it.
config/s390/s390.h (EXTRA_CONSTRAINT): Use it.
(EXTRA_MEMORY_CONSTRAINT): New macro.
* config/s390/s390.md: Throughout the machine description,
replace all instances of the constraint combinations 'Qo'
or 'oQ' with simply 'Q'.
From-SVN: r56291
Diffstat (limited to 'gcc/local-alloc.c')
-rw-r--r-- | gcc/local-alloc.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/local-alloc.c b/gcc/local-alloc.c index 77607ba..04e2fbe 100644 --- a/gcc/local-alloc.c +++ b/gcc/local-alloc.c @@ -1342,7 +1342,8 @@ block_alloc (b) /* If the operand is an address, find a register in it. There may be more than one register, but we only try one of them. */ - if (recog_data.constraints[i][0] == 'p') + if (recog_data.constraints[i][0] == 'p' + || EXTRA_ADDRESS_CONSTRAINT (recog_data.constraints[i][0])) while (GET_CODE (r1) == PLUS || GET_CODE (r1) == MULT) r1 = XEXP (r1, 0); @@ -2472,7 +2473,8 @@ requires_inout (p) break; default: - if (REG_CLASS_FROM_LETTER (c) == NO_REGS) + if (REG_CLASS_FROM_LETTER (c) == NO_REGS + && !EXTRA_ADDRESS_CONSTRAINT (c)) break; /* FALLTHRU */ case 'p': |