lower-subreg.c (adjust_decomposed_uses): Delete.
authorRichard Sandiford <rdsandiford@googlemail.com>
Thu, 28 Aug 2014 06:23:55 +0000 (06:23 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Thu, 28 Aug 2014 06:23:55 +0000 (06:23 +0000)
gcc/
* lower-subreg.c (adjust_decomposed_uses): Delete.
(resolve_debug): Use FOR_EACH_SUBRTX_PTR rather than for_each_rtx.
Remove handling of null rtxes.

From-SVN: r214648

gcc/ChangeLog
gcc/lower-subreg.c

index e8c89a4207dd101ad858a1c856a9b56107e963d1..a717bb9acfd6ff0abadaf7471c6b2d28b50050b2 100644 (file)
@@ -1,3 +1,9 @@
+2014-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
+
+       * lower-subreg.c (adjust_decomposed_uses): Delete.
+       (resolve_debug): Use FOR_EACH_SUBRTX_PTR rather than for_each_rtx.
+       Remove handling of null rtxes.
+
 2014-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
 
        * lower-subreg.c: Include rtl-iter.h.
index 43991e6281a9a531a6bb6842ec6c33bff1c91d73..b5b45664940b166a4ad8b783092b3c7015ec5ab6 100644 (file)
@@ -765,34 +765,6 @@ resolve_subreg_use (rtx *loc, rtx insn)
   return false;
 }
 
-/* This is called via for_each_rtx.  Look for SUBREGs which can be
-   decomposed and decomposed REGs that need copying.  */
-
-static int
-adjust_decomposed_uses (rtx *px, void *data ATTRIBUTE_UNUSED)
-{
-  rtx x = *px;
-
-  if (x == NULL_RTX)
-    return 0;
-
-  if (resolve_subreg_p (x))
-    {
-      x = simplify_subreg_concatn (GET_MODE (x), SUBREG_REG (x),
-                                  SUBREG_BYTE (x));
-
-      if (x)
-       *px = x;
-      else
-       x = copy_rtx (*px);
-    }
-
-  if (resolve_reg_p (x))
-    *px = copy_rtx (x);
-
-  return 0;
-}
-
 /* Resolve any decomposed registers which appear in register notes on
    INSN.  */
 
@@ -1167,7 +1139,24 @@ resolve_use (rtx pat, rtx_insn *insn)
 static void
 resolve_debug (rtx_insn *insn)
 {
-  for_each_rtx (&PATTERN (insn), adjust_decomposed_uses, NULL_RTX);
+  subrtx_ptr_iterator::array_type array;
+  FOR_EACH_SUBRTX_PTR (iter, array, &PATTERN (insn), NONCONST)
+    {
+      rtx *loc = *iter;
+      rtx x = *loc;
+      if (resolve_subreg_p (x))
+       {
+         x = simplify_subreg_concatn (GET_MODE (x), SUBREG_REG (x),
+                                      SUBREG_BYTE (x));
+
+         if (x)
+           *loc = x;
+         else
+           x = copy_rtx (*loc);
+       }
+      if (resolve_reg_p (x))
+       *loc = copy_rtx (x);
+    }
 
   df_insn_rescan (insn);