s390.c (struct machine_function): Use save_return_addr_p as a general flag that the...
authorUlrich Weigand <uweigand@de.ibm.com>
Thu, 30 Oct 2003 14:11:34 +0000 (14:11 +0000)
committerUlrich Weigand <uweigand@gcc.gnu.org>
Thu, 30 Oct 2003 14:11:34 +0000 (14:11 +0000)
commit545d16ffb6c993c164825d29d902cdad9aef8b87
tree3daf2dd9d464500d588dd8993bd0f6f793f88b2f
parentbde58e3208a4297b5e9098cd69a5cbc1cbb3efbc
s390.c (struct machine_function): Use save_return_addr_p as a general flag that the return address register needs...

* config/s390/s390.c (struct machine_function): Use save_return_addr_p
as a general flag that the return address register needs to be saved,
not necessarily because of __builtin_return_addr (0).
(s390_split_branches): Remove TEMP_REG and TEMP_USED arguments,
remove special handling of zSeries machines.
(s390_optimize_prolog): Remove TEMP_USED argument, treat the return
register as a regular register on zSeries machines.
(s390_reorg): Adjust calls to s390_split_branches and
s390_optimize_prolog.
(s390_frame_info): On zSeries machines, do not assume the return
register is always used.  Update regs_ever_live with current data
for the special registers.
(s390_emit_epilogue): Use save_return_addr_p to determine whether
the return register was saved.
* config/s390/s390.h (CONDITIONAL_REGISTER_USAGE): Do not mark
RETURN_REGNUM fixed on zSeries machines.
(REG_ALLOC_ORDER): Use RETURN_REGNUM last.
* config/s390/s390.md ("*doloop_si"): Handle branch overflow
via ahi-jgne pair on zSeries machines.
("*doloop_di"): Likewise.
("*doloop_di_long"): Remove.

From-SVN: r73084
gcc/ChangeLog
gcc/config/s390/s390.c
gcc/config/s390/s390.h
gcc/config/s390/s390.md