Commit 764df76c by Dimitar Dimitrov Committed by Jeff Law

lra-eliminations.c (update_reg_eliminate): Mark all spanning hard registers for Pmode.

2018-06-23  Dimitar Dimitrov  <dimitar@dinux.eu>

	* lra-eliminations.c (update_reg_eliminate): Mark all spanning hard
	registers for Pmode.
	* lra-lives.c (check_pseudos_live_through_calls): Mark all spanning
	hard registers for the clobbered pseudo.

From-SVN: r262205
parent 3d09a8ab
2018-06-27 Dimitar Dimitrov <dimitar@dinux.eu>
* lra-eliminations.c (update_reg_eliminate): Mark all spanning hard
registers for Pmode.
* lra-lives.c (check_pseudos_live_through_calls): Mark all spanning
hard registers for the clobbered pseudo.
2018-06-27 Paul Koning <ni1d@arrl.net> 2018-06-27 Paul Koning <ni1d@arrl.net>
* common/config/pdp11/pdp11-common.c (pdp11_handle_option): Handle * common/config/pdp11/pdp11-common.c (pdp11_handle_option): Handle
......
...@@ -1264,13 +1264,13 @@ update_reg_eliminate (bitmap insns_with_changed_offsets) ...@@ -1264,13 +1264,13 @@ update_reg_eliminate (bitmap insns_with_changed_offsets)
CLEAR_HARD_REG_SET (temp_hard_reg_set); CLEAR_HARD_REG_SET (temp_hard_reg_set);
for (ep = reg_eliminate; ep < &reg_eliminate[NUM_ELIMINABLE_REGS]; ep++) for (ep = reg_eliminate; ep < &reg_eliminate[NUM_ELIMINABLE_REGS]; ep++)
if (elimination_map[ep->from] == NULL) if (elimination_map[ep->from] == NULL)
SET_HARD_REG_BIT (temp_hard_reg_set, ep->from); add_to_hard_reg_set (&temp_hard_reg_set, Pmode, ep->from);
else if (elimination_map[ep->from] == ep) else if (elimination_map[ep->from] == ep)
{ {
/* Prevent the hard register into which we eliminate from /* Prevent the hard register into which we eliminate from
the usage for pseudos. */ the usage for pseudos. */
if (ep->from != ep->to) if (ep->from != ep->to)
SET_HARD_REG_BIT (temp_hard_reg_set, ep->to); add_to_hard_reg_set (&temp_hard_reg_set, Pmode, ep->to);
if (maybe_ne (ep->previous_offset, ep->offset)) if (maybe_ne (ep->previous_offset, ep->offset))
{ {
bitmap_ior_into (insns_with_changed_offsets, bitmap_ior_into (insns_with_changed_offsets,
......
...@@ -581,7 +581,8 @@ check_pseudos_live_through_calls (int regno, ...@@ -581,7 +581,8 @@ check_pseudos_live_through_calls (int regno,
for (hr = 0; hr < FIRST_PSEUDO_REGISTER; hr++) for (hr = 0; hr < FIRST_PSEUDO_REGISTER; hr++)
if (targetm.hard_regno_call_part_clobbered (hr, if (targetm.hard_regno_call_part_clobbered (hr,
PSEUDO_REGNO_MODE (regno))) PSEUDO_REGNO_MODE (regno)))
SET_HARD_REG_BIT (lra_reg_info[regno].conflict_hard_regs, hr); add_to_hard_reg_set (&lra_reg_info[regno].conflict_hard_regs,
PSEUDO_REGNO_MODE (regno), hr);
lra_reg_info[regno].call_p = true; lra_reg_info[regno].call_p = true;
if (! sparseset_bit_p (pseudos_live_through_setjumps, regno)) if (! sparseset_bit_p (pseudos_live_through_setjumps, regno))
return; return;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment