s390.c (s390_split_branches, [...]): Don't set save_return_addr_p.

2005-08-12  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.c (s390_split_branches, s390_init_frame_layout):
	Don't set save_return_addr_p.
	(s390_register_info): Make clobbered_regs not depending on
	save_return_addr_p.

From-SVN: r103025
This commit is contained in:
Andreas Krebbel 2005-08-12 11:58:05 +00:00 committed by Ulrich Weigand
parent f0ed20083b
commit dc4477f54b
2 changed files with 17 additions and 14 deletions

View File

@ -1,3 +1,10 @@
2005-08-12 Andreas Krebbel <krebbel1@de.ibm.com>
* config/s390/s390.c (s390_split_branches, s390_init_frame_layout):
Don't set save_return_addr_p.
(s390_register_info): Make clobbered_regs not depending on
save_return_addr_p.
2005-08-12 Kaz Kojima <kkojima@gcc.gnu.org>
* gcc.c (LINK_SSP_SPEC): Remove space before a trailing }.

View File

@ -224,7 +224,10 @@ struct s390_frame_layout GTY (())
/* Number of floating point registers f8-f15 which must be saved. */
int high_fprs;
/* Set if return address needs to be saved. */
/* Set if return address needs to be saved.
This flag is set by s390_return_addr_rtx if it could not use
the initial value of r14 and therefore depends on r14 saved
to the stack. */
bool save_return_addr_p;
/* Size of stack frame. */
@ -4405,10 +4408,6 @@ s390_split_branches (void)
if (get_attr_length (insn) <= 4)
continue;
/* We are going to use the return register as scratch register,
make sure it will be saved/restored by the prologue/epilogue. */
cfun_frame_layout.save_return_addr_p = 1;
if (!flag_pic)
{
new_literal = 1;
@ -5818,8 +5817,12 @@ s390_register_info (int clobbered_regs[])
&& REGNO (cfun->machine->base_reg) == BASE_REGNUM;
clobbered_regs[RETURN_REGNUM]
= cfun->machine->split_branches_pending_p
|| cfun_frame_layout.save_return_addr_p;
|= (cfun->machine->split_branches_pending_p
|| cfun_frame_layout.save_return_addr_p
|| TARGET_TPF_PROFILING
|| !current_function_is_leaf
|| current_function_stdarg
|| current_function_calls_eh_return);
clobbered_regs[STACK_POINTER_REGNUM]
= !current_function_is_leaf
@ -6021,13 +6024,6 @@ s390_init_frame_layout (void)
/* If return address register is explicitly used, we need to save it. */
s390_regs_ever_clobbered (clobbered_regs);
if (clobbered_regs[RETURN_REGNUM]
|| !current_function_is_leaf
|| TARGET_TPF_PROFILING
|| current_function_stdarg
|| current_function_calls_eh_return)
cfun_frame_layout.save_return_addr_p = true;
/* On S/390 machines, we may need to perform branch splitting, which
will require both base and return address register. We have no
choice but to assume we're going to need them until right at the