linux.h (ASM_OUTPUT_LABELREF): Remove.

* 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.

From-SVN: r48643
This commit is contained in:
Ulrich Weigand 2002-01-08 13:11:23 +00:00 committed by Ulrich Weigand
parent acd8ea2ae0
commit bc1fa59ccd
4 changed files with 23 additions and 7 deletions

View File

@ -1,3 +1,11 @@
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.

View File

@ -82,9 +82,6 @@ Boston, MA 02111-1307, USA. */
/* 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. */

View File

@ -3078,6 +3078,12 @@ s390_emit_epilogue ()
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. */

View File

@ -3153,7 +3153,10 @@
[(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
@ -3173,7 +3176,6 @@
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" "")
@ -3297,7 +3299,10 @@
[(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
@ -3333,7 +3338,7 @@
&& !legitimate_reload_constant_p (operands[2]))
operands[2] = force_const_mem (SImode, operands[2]);
}")
;
; addhi3 instruction pattern(s).