lra-constraints.c (need_for_all_save_p): Use macro HARD_REGNO_CALL_PART_CLOBBERED.

2013-09-18  Vladimir Makarov  <vmakarov@redhat.com>

	* lra-constraints.c (need_for_all_save_p): Use macro
	HARD_REGNO_CALL_PART_CLOBBERED.
	* lra-lives.c (check_pseudos_live_through_calls): Use the macro to
	set up pseudo conflict hard regs.

From-SVN: r202721
This commit is contained in:
Vladimir Makarov 2013-09-18 19:12:16 +00:00 committed by Vladimir Makarov
parent 09487185c8
commit 8a26ad39c4
3 changed files with 16 additions and 1 deletions

View File

@ -1,3 +1,10 @@
2013-09-18 Vladimir Makarov <vmakarov@redhat.com>
* lra-constraints.c (need_for_all_save_p): Use macro
HARD_REGNO_CALL_PART_CLOBBERED.
* lra-lives.c (check_pseudos_live_through_calls): Use the macro to
set up pseudo conflict hard regs.
2013-09-18 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/58452

View File

@ -4335,7 +4335,9 @@ need_for_call_save_p (int regno)
return (usage_insns[regno].calls_num < calls_num
&& (overlaps_hard_reg_set_p
(call_used_reg_set,
PSEUDO_REGNO_MODE (regno), reg_renumber[regno])));
PSEUDO_REGNO_MODE (regno), reg_renumber[regno])
|| HARD_REGNO_CALL_PART_CLOBBERED (reg_renumber[regno],
PSEUDO_REGNO_MODE (regno))));
}
/* Global registers occurring in the current EBB. */

View File

@ -457,11 +457,17 @@ lra_setup_reload_pseudo_preferenced_hard_reg (int regno,
static inline void
check_pseudos_live_through_calls (int regno)
{
int hr;
if (! sparseset_bit_p (pseudos_live_through_calls, regno))
return;
sparseset_clear_bit (pseudos_live_through_calls, regno);
IOR_HARD_REG_SET (lra_reg_info[regno].conflict_hard_regs,
call_used_reg_set);
for (hr = 0; hr < FIRST_PSEUDO_REGISTER; hr++)
if (HARD_REGNO_CALL_PART_CLOBBERED (hr, PSEUDO_REGNO_MODE (regno)))
SET_HARD_REG_BIT (lra_reg_info[regno].conflict_hard_regs, hr);
#ifdef ENABLE_CHECKING
lra_reg_info[regno].call_p = true;
#endif