regcprop.c (cprop_find_used_regs_1): Delete.
authorRichard Sandiford <rdsandiford@googlemail.com>
Thu, 28 Aug 2014 06:24:12 +0000 (06:24 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Thu, 28 Aug 2014 06:24:12 +0000 (06:24 +0000)
gcc/
* regcprop.c (cprop_find_used_regs_1): Delete.
(cprop_find_used_regs): Use FOR_EACH_SUBRTX instead of for_each_rtx.

From-SVN: r214652

gcc/ChangeLog
gcc/regcprop.c

index 5deaac3dd85eccc48a0e7db26b7d7cb792b17f93..45ec00b1de467498b033c294de399ea8b132cf20 100644 (file)
@@ -1,3 +1,8 @@
+2014-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
+
+       * regcprop.c (cprop_find_used_regs_1): Delete.
+       (cprop_find_used_regs): Use FOR_EACH_SUBRTX instead of for_each_rtx.
+
 2014-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
 
        * regcprop.c: Include rtl-iter.h.
index e65f89df168280769824fd7ec85299353b1d912c..3297721df3919842986f51c44be3e910eede3996 100644 (file)
@@ -702,33 +702,28 @@ apply_debug_insn_changes (struct value_data *vd, unsigned int regno)
   apply_change_group ();
 }
 
-/* Called via for_each_rtx, for all used registers in a real
-   insn apply DEBUG_INSN changes that change registers to the
-   used register.  */
-
-static int
-cprop_find_used_regs_1 (rtx *loc, void *data)
-{
-  if (REG_P (*loc))
-    {
-      struct value_data *vd = (struct value_data *) data;
-      if (vd->e[REGNO (*loc)].debug_insn_changes)
-       {
-         apply_debug_insn_changes (vd, REGNO (*loc));
-         free_debug_insn_changes (vd, REGNO (*loc));
-       }
-    }
-  return 0;
-}
-
 /* Called via note_uses, for all used registers in a real insn
    apply DEBUG_INSN changes that change registers to the used
    registers.  */
 
 static void
-cprop_find_used_regs (rtx *loc, void *vd)
+cprop_find_used_regs (rtx *loc, void *data)
 {
-  for_each_rtx (loc, cprop_find_used_regs_1, vd);
+  struct value_data *const vd = (struct value_data *) data;
+  subrtx_iterator::array_type array;
+  FOR_EACH_SUBRTX (iter, array, *loc, NONCONST)
+    {
+      const_rtx x = *iter;
+      if (REG_P (x))
+       {
+         unsigned int regno = REGNO (x);
+         if (vd->e[regno].debug_insn_changes)
+           {
+             apply_debug_insn_changes (vd, regno);
+             free_debug_insn_changes (vd, regno);
+           }
+       }
+    }
 }
 
 /* Perform the forward copy propagation on basic block BB.  */