diff options
author | uweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-02-04 15:51:18 +0000 |
---|---|---|
committer | uweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-02-04 15:51:18 +0000 |
commit | 64f977d69ca562b907fbb7264d2792f3699d8fb8 (patch) | |
tree | 7b439dbd1120cc295cc4e3e8cbffe9eac9defac0 /gcc/config/s390/s390.h | |
parent | b442c5a913994e2b8df42df12636c1be7cc7c8d6 (diff) | |
download | gcc-64f977d69ca562b907fbb7264d2792f3699d8fb8.tar.gz |
* config/s390/s390-protos.h (legitimize_la_operand,
s390_secondary_input_reload_class, s390_plus_operand,
s390_expand_plus_operand): Add prototypes.
config/s390/s390.c (s390_secondary_input_reload_class,
s390_plus_operand, s390_expand_plus_operand): New functions.
(struct s390_address): New member 'pointer'.
(s390_decompose_address): Compute it.
(legitimate_la_operand_p): Use it.
(legitimize_la_operand): New function.
(movti, movdi, movdf splitters): Call it.
config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS): Define.
(PREDICATE_CODES): Add s390_plus_operand.
config/s390/s390.md (adddi3_inv_64, addaddr_ccclobber): Delete.
(la_ccclobber): Allow GENERAL_REGS as output operand.
(reload_load_address, *reload_load_address_reg_0, *la, *do_la_reg_0,
*reload_la_64, *reload_la_31 and splitters): Delete, replace by ...
(*la_64, *la_31, reload_indi, reload_insi): ... these.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@49476 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/s390/s390.h')
-rw-r--r-- | gcc/config/s390/s390.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/gcc/config/s390/s390.h b/gcc/config/s390/s390.h index f26cd659880..f64850526ec 100644 --- a/gcc/config/s390/s390.h +++ b/gcc/config/s390/s390.h @@ -577,6 +577,12 @@ extern enum reg_class regclass_map[FIRST_PSEUDO_REGISTER]; /* smalled class cont (GET_MODE_CLASS (MODE) == MODE_COMPLEX_FLOAT ? 2 : 1) : \ (GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD) +/* We need a secondary reload when loading a PLUS which is + not a valid operand for LOAD ADDRESS. */ + +#define SECONDARY_INPUT_RELOAD_CLASS(CLASS, MODE, IN) \ + s390_secondary_input_reload_class ((CLASS), (MODE), (IN)) + /* If we are copying between FP registers and anything else, we need a memory location. */ @@ -1293,7 +1299,8 @@ extern struct rtx_def *s390_compare_op0, *s390_compare_op1; {"larl_operand", { SYMBOL_REF, CONST, CONST_INT, CONST_DOUBLE }}, \ {"load_multiple_operation", {PARALLEL}}, \ {"store_multiple_operation", {PARALLEL}}, \ - {"const0_operand", { CONST_INT, CONST_DOUBLE }}, + {"const0_operand", { CONST_INT, CONST_DOUBLE }}, \ + {"s390_plus_operand", { PLUS }}, /* S/390 constant pool breaks the devices in crtstuff.c to control section |