summaryrefslogtreecommitdiff
path: root/gcc/config/s390/s390.h
diff options
context:
space:
mode:
authoruweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4>2002-02-04 15:51:18 +0000
committeruweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4>2002-02-04 15:51:18 +0000
commit64f977d69ca562b907fbb7264d2792f3699d8fb8 (patch)
tree7b439dbd1120cc295cc4e3e8cbffe9eac9defac0 /gcc/config/s390/s390.h
parentb442c5a913994e2b8df42df12636c1be7cc7c8d6 (diff)
downloadgcc-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.h9
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