lra-eliminations.c (update_reg_eliminate): Mark all spanning hard registers for Pmode.
authorDimitar Dimitrov <dimitar@dinux.eu>
Thu, 28 Jun 2018 03:43:48 +0000 (03:43 +0000)
committerJeff Law <law@gcc.gnu.org>
Thu, 28 Jun 2018 03:43:48 +0000 (21:43 -0600)
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

gcc/ChangeLog
gcc/lra-eliminations.c
gcc/lra-lives.c

index fc0550460b879aded8c6d9440c490deca03e0091..e1ba55e3f052a9e89b08c57623f76bd34fcafbda 100644 (file)
@@ -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
index 21d8d5f8018d696bf54fc315fc0639e14c1e1760..f5f104020b34438da30509cd9d6413e02838a625 100644 (file)
@@ -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,
index 588bc09cb8e61b2d33320990c7efa3d8ae8672a0..920fd02b997f8d6e6497e8f82f36406115bd424a 100644 (file)
@@ -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;