aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitar Dimitrov <dimitar@dinux.eu>2018-06-28 03:43:48 +0000
committerJeff Law <law@gcc.gnu.org>2018-06-27 21:43:48 -0600
commit764df76cb2dc6f3c0d6ae3cdf75eaf5cb3832a38 (patch)
tree444412cd82b33d98215b32dc20de26ac2b7cb24b
parent3d09a8abd304171b2ccdb4c5cdece6da874c643a (diff)
downloadgcc-764df76cb2dc6f3c0d6ae3cdf75eaf5cb3832a38.zip
gcc-764df76cb2dc6f3c0d6ae3cdf75eaf5cb3832a38.tar.gz
gcc-764df76cb2dc6f3c0d6ae3cdf75eaf5cb3832a38.tar.bz2
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
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/lra-eliminations.c4
-rw-r--r--gcc/lra-lives.c3
3 files changed, 11 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fc05504..e1ba55e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+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>
* common/config/pdp11/pdp11-common.c (pdp11_handle_option): Handle
diff --git a/gcc/lra-eliminations.c b/gcc/lra-eliminations.c
index 21d8d5f..f5f1040 100644
--- a/gcc/lra-eliminations.c
+++ b/gcc/lra-eliminations.c
@@ -1264,13 +1264,13 @@ update_reg_eliminate (bitmap insns_with_changed_offsets)
CLEAR_HARD_REG_SET (temp_hard_reg_set);
for (ep = reg_eliminate; ep < &reg_eliminate[NUM_ELIMINABLE_REGS]; ep++)
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)
{
/* Prevent the hard register into which we eliminate from
the usage for pseudos. */
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))
{
bitmap_ior_into (insns_with_changed_offsets,
diff --git a/gcc/lra-lives.c b/gcc/lra-lives.c
index 588bc09..920fd02 100644
--- a/gcc/lra-lives.c
+++ b/gcc/lra-lives.c
@@ -581,7 +581,8 @@ check_pseudos_live_through_calls (int regno,
for (hr = 0; hr < FIRST_PSEUDO_REGISTER; hr++)
if (targetm.hard_regno_call_part_clobbered (hr,
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;
if (! sparseset_bit_p (pseudos_live_through_setjumps, regno))
return;