s390.c (s390_split_branches): Revert 2005-08-12 change.
* config/s390/s390.c (s390_split_branches): Revert 2005-08-12 change. (s390_register_info): Ignore clobbered_regs information for fixed registers, and only fixed registers. (s390_init_frame_layout): Remove redundant call. From-SVN: r103054
This commit is contained in:
parent
18f0b880ce
commit
e2df5c1dee
2 changed files with 26 additions and 18 deletions
|
@ -1,3 +1,10 @@
|
|||
2005-08-13 Ulrich Weigand <uweigand@de.ibm.com>
|
||||
|
||||
* config/s390/s390.c (s390_split_branches): Revert 2005-08-12 change.
|
||||
(s390_register_info): Ignore clobbered_regs information for fixed
|
||||
registers, and only fixed registers.
|
||||
(s390_init_frame_layout): Remove redundant call.
|
||||
|
||||
2005-08-12 Gerald Pfeifer <gerald@pfeifer.com>
|
||||
|
||||
* doc/invoke.texi (C++ Dialect Options): Add dynamic_cast to
|
||||
|
|
|
@ -4433,6 +4433,10 @@ 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;
|
||||
|
@ -5828,34 +5832,34 @@ s390_register_info (int clobbered_regs[])
|
|||
s390_regs_ever_clobbered (clobbered_regs);
|
||||
|
||||
for (i = 0; i < 16; i++)
|
||||
clobbered_regs[i] = clobbered_regs[i] && !global_regs[i];
|
||||
clobbered_regs[i] = clobbered_regs[i] && !global_regs[i] && !fixed_regs[i];
|
||||
|
||||
if (frame_pointer_needed)
|
||||
clobbered_regs[HARD_FRAME_POINTER_REGNUM] = 1;
|
||||
|
||||
if (flag_pic)
|
||||
clobbered_regs[PIC_OFFSET_TABLE_REGNUM]
|
||||
= regs_ever_live[PIC_OFFSET_TABLE_REGNUM];
|
||||
|= regs_ever_live[PIC_OFFSET_TABLE_REGNUM];
|
||||
|
||||
clobbered_regs[BASE_REGNUM]
|
||||
= cfun->machine->base_reg
|
||||
&& REGNO (cfun->machine->base_reg) == BASE_REGNUM;
|
||||
|= (cfun->machine->base_reg
|
||||
&& REGNO (cfun->machine->base_reg) == BASE_REGNUM);
|
||||
|
||||
clobbered_regs[RETURN_REGNUM]
|
||||
|= (cfun->machine->split_branches_pending_p
|
||||
|| cfun_frame_layout.save_return_addr_p
|
||||
|= (!current_function_is_leaf
|
||||
|| TARGET_TPF_PROFILING
|
||||
|| !current_function_is_leaf
|
||||
|| current_function_stdarg
|
||||
|| current_function_calls_eh_return);
|
||||
|| cfun->machine->split_branches_pending_p
|
||||
|| cfun_frame_layout.save_return_addr_p
|
||||
|| current_function_calls_eh_return
|
||||
|| current_function_stdarg);
|
||||
|
||||
clobbered_regs[STACK_POINTER_REGNUM]
|
||||
= !current_function_is_leaf
|
||||
|| TARGET_TPF_PROFILING
|
||||
|| cfun_save_high_fprs_p
|
||||
|| get_frame_size () > 0
|
||||
|| current_function_calls_alloca
|
||||
|| current_function_stdarg;
|
||||
|= (!current_function_is_leaf
|
||||
|| TARGET_TPF_PROFILING
|
||||
|| cfun_save_high_fprs_p
|
||||
|| get_frame_size () > 0
|
||||
|| current_function_calls_alloca
|
||||
|| current_function_stdarg);
|
||||
|
||||
for (i = 6; i < 16; i++)
|
||||
if (clobbered_regs[i])
|
||||
|
@ -6046,9 +6050,6 @@ s390_init_frame_layout (void)
|
|||
int base_used;
|
||||
int clobbered_regs[16];
|
||||
|
||||
/* If return address register is explicitly used, we need to save it. */
|
||||
s390_regs_ever_clobbered (clobbered_regs);
|
||||
|
||||
/* 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
|
||||
|
|
Loading…
Add table
Reference in a new issue