+2002-01-08 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * config/s390/linux.h (ASM_OUTPUT_LABELREF): Remove.
+ * config/s390/s390.c (s390_emit_epilog): Add REG_FRAME_RELATED_EXPR
+ to insn adjusting stack/frame pointer.
+ * config/s390/s390.md (reload_la_64, reload_la_31): Do not
+ accept operands that cause the insn to be non-splittable.
+
2002-01-08 Graham Stott <grahams@redhat.com>
* c-tree.h (C_TYPE_FIELDS_READONLY): Uppercase macro parameter.
/* Prefix for internally generated assembler labels. */
#define LPREFIX ".L"
-#define ASM_OUTPUT_LABELREF(FILE, NAME) \
- fprintf (FILE, "%s", NAME);
-
/* This is how to output the definition of a user-level label named NAME,
such as the label on a static function or variable NAME. */
insn = emit_insn (gen_add2_insn (frame_pointer, frame_off));
RTX_FRAME_RELATED_P (insn) = 1;
+ REG_NOTES (insn) =
+ gen_rtx_EXPR_LIST (REG_FRAME_RELATED_EXPR,
+ gen_rtx_SET (VOIDmode, frame_pointer,
+ gen_rtx_PLUS (Pmode, frame_pointer,
+ GEN_INT (frame.frame_size - offset))),
+ REG_NOTES (insn));
}
/* Restore call saved fprs. */
[(set (match_operand:DI 0 "register_operand" "=d")
(plus:DI (match_operand:DI 1 "general_operand" "g")
(match_operand:DI 2 "general_operand" "g")))]
- "TARGET_64BIT && reload_in_progress"
+ "TARGET_64BIT && reload_in_progress
+ && !address_operand (gen_rtx_PLUS (DImode, operands[1], operands[2]), QImode)
+ && !rtx_equal_p (operands[0], operands[1])
+ && !rtx_equal_p (operands[0], operands[2])"
"#")
(define_split
operands[1] = force_const_mem (DImode, operands[1]);
}")
-
(define_split
[(set (match_operand:DI 0 "register_operand" "")
(plus:DI (match_operand:DI 1 "register_operand" "")
[(set (match_operand:SI 0 "register_operand" "=d")
(plus:SI (match_operand:SI 1 "general_operand" "g")
(match_operand:SI 2 "general_operand" "g")))]
- "reload_in_progress"
+ "reload_in_progress
+ && !address_operand (gen_rtx_PLUS (SImode, operands[1], operands[2]), QImode)
+ && !rtx_equal_p (operands[0], operands[1])
+ && !rtx_equal_p (operands[0], operands[2])"
"#")
(define_split
&& !legitimate_reload_constant_p (operands[2]))
operands[2] = force_const_mem (SImode, operands[2]);
}")
-
+
;
; addhi3 instruction pattern(s).