type reg_equiv_init as rtx_insn_list
authorTrevor Saunders <tbsaunde+gcc@tbsaunde.org>
Sat, 2 May 2015 21:06:43 +0000 (21:06 +0000)
committerTrevor Saunders <tbsaunde@gcc.gnu.org>
Sat, 2 May 2015 21:06:43 +0000 (21:06 +0000)
gcc/ChangeLog:

2015-05-02  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

* reload.h (struct reg_equivs_t): Change type of init to
rtx_insn *.
* ira.c (fix_reg_equiv_init): Adjust.
* reload1.c (eliminate_regs_1): Likewise.
(init_eliminable_invariants): Likewise.

From-SVN: r222740

gcc/ChangeLog
gcc/ira.c
gcc/reload.h
gcc/reload1.c

index d3e23bd761ef093a9f435508a9136ed92e61c16f..59fa7f77c8d73570d60831e1061374a4a6aab926 100644 (file)
@@ -1,3 +1,11 @@
+2015-05-02  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+
+       * reload.h (struct reg_equivs_t): Change type of init to
+       rtx_insn *.
+       * ira.c (fix_reg_equiv_init): Adjust.
+       * reload1.c (eliminate_regs_1): Likewise.
+       (init_eliminable_invariants): Likewise.
+
 2015-05-02  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
 
        * cselib.c (fp_setter_insn): Take a rtx_insn *.
index 25baa90845ac506302422d32aea25dbc81f6051a..ab8e9cee86caadcd65484133c12828888ac73f1f 100644 (file)
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -2709,20 +2709,22 @@ fix_reg_equiv_init (void)
 {
   int max_regno = max_reg_num ();
   int i, new_regno, max;
-  rtx x, prev, next, insn, set;
+  rtx set;
+  rtx_insn_list *x, *next, *prev;
+  rtx_insn *insn;
 
   if (max_regno_before_ira < max_regno)
     {
       max = vec_safe_length (reg_equivs);
       grow_reg_equivs ();
       for (i = FIRST_PSEUDO_REGISTER; i < max; i++)
-       for (prev = NULL_RTX, x = reg_equiv_init (i);
+       for (prev = NULL, x = reg_equiv_init (i);
             x != NULL_RTX;
             x = next)
          {
-           next = XEXP (x, 1);
-           insn = XEXP (x, 0);
-           set = single_set (as_a <rtx_insn *> (insn));
+           next = x->next ();
+           insn = x->insn ();
+           set = single_set (insn);
            ira_assert (set != NULL_RTX
                        && (REG_P (SET_DEST (set)) || REG_P (SET_SRC (set))));
            if (REG_P (SET_DEST (set))
index c777e541247d3c015ec3465606fadd99b6d1d041..a58b9025bf55b11c6a87dc77ec64ee335ee9d9ef 100644 (file)
@@ -239,7 +239,7 @@ struct reg_equivs_t
 
   /* The list of insns that initialized reg N from its equivalent
      constant or memory slot.  */
-  rtx init;
+  rtx_insn_list *init;
 };
 
 #define reg_equiv_constant(ELT) \
index 82b106e6bc6e6e481acfbfd4554c979cd44ffbf4..4c4790692568d503c9080b104a90c30b7e1e4209 100644 (file)
@@ -2619,7 +2619,7 @@ eliminate_regs_1 (rtx x, machine_mode mem_mode, rtx insn,
                                     mem_mode, insn, true, for_costs);
          /* There exists at least one use of REGNO that cannot be
             eliminated.  Prevent the defining insn from being deleted.  */
-         reg_equiv_init (regno) = NULL_RTX;
+         reg_equiv_init (regno) = NULL;
          if (!for_costs)
            alter_reg (regno, -1, true);
        }
@@ -4252,17 +4252,17 @@ init_eliminable_invariants (rtx_insn *first, bool do_subregs)
                    {
                      reg_equiv_memory_loc (i) = force_const_mem (mode, x);
                      if (! reg_equiv_memory_loc (i))
-                       reg_equiv_init (i) = NULL_RTX;
+                       reg_equiv_init (i) = NULL;
                    }
                }
              else
                {
-                 reg_equiv_init (i) = NULL_RTX;
+                 reg_equiv_init (i) = NULL;
                  continue;
                }
            }
          else
-           reg_equiv_init (i) = NULL_RTX;
+           reg_equiv_init (i) = NULL;
        }
     }