arc.c (write_ext_corereg_1): Delete.
authorRichard Sandiford <richard.sandiford@arm.com>
Sun, 2 Nov 2014 20:00:25 +0000 (20:00 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Sun, 2 Nov 2014 20:00:25 +0000 (20:00 +0000)
gcc/
* config/arc/arc.c (write_ext_corereg_1): Delete.
(arc_write_ext_corereg): Use FOR_EACH_SUBRTX.

From-SVN: r217019

gcc/ChangeLog
gcc/config/arc/arc.c

index 1d00f012e99e801a446483a0a1b730a66c3070d2..9aa585ed1ab181ad098cfd2862c95107424fde4c 100644 (file)
@@ -1,3 +1,8 @@
+2014-11-02  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * config/arc/arc.c (write_ext_corereg_1): Delete.
+       (arc_write_ext_corereg): Use FOR_EACH_SUBRTX.
+
 2014-11-02  Richard Sandiford  <richard.sandiford@arm.com>
 
        * config/arc/arc.c (arc600_corereg_hazard_1): Delete.
index ba0670dd8f477c775a7d7c3b165dd1f0b411f13b..0f3825e10e5014c0aef16847a288cce433bb9978 100644 (file)
@@ -8441,34 +8441,30 @@ arc_predicate_delay_insns (void)
   be hoisted out into a delay slot, a basic block can also be emptied this
   way, and branch and/or fall through targets be redirected.  Hence we don't
   want such writes in a delay slot.  */
-/* Called by arc_write_ext_corereg via for_each_rtx.  */
-
-static int
-write_ext_corereg_1 (rtx *xp, void *data ATTRIBUTE_UNUSED)
-{
-  rtx x = *xp;
-  rtx dest;
-
-  switch (GET_CODE (x))
-    {
-    case SET: case POST_INC: case POST_DEC: case PRE_INC: case PRE_DEC:
-      break;
-    default:
-    /* This is also fine for PRE/POST_MODIFY, because they contain a SET.  */
-      return 0;
-    }
-  dest = XEXP (x, 0);
-  if (REG_P (dest) && REGNO (dest) >= 32 && REGNO (dest) < 61)
-    return 1;
-  return 0;
-}
 
 /* Return nonzreo iff INSN writes to an extension core register.  */
 
 int
 arc_write_ext_corereg (rtx insn)
 {
-  return for_each_rtx (&PATTERN (insn), write_ext_corereg_1, 0);
+  subrtx_iterator::array_type array;
+  FOR_EACH_SUBRTX (iter, array, PATTERN (insn), NONCONST)
+    {
+      const_rtx x = *iter;
+      switch (GET_CODE (x))
+       {
+       case SET: case POST_INC: case POST_DEC: case PRE_INC: case PRE_DEC:
+         break;
+       default:
+         /* This is also fine for PRE/POST_MODIFY, because they
+            contain a SET.  */
+         continue;
+       }
+      const_rtx dest = XEXP (x, 0);
+      if (REG_P (dest) && REGNO (dest) >= 32 && REGNO (dest) < 61)
+       return 1;
+    }
+  return 0;
 }
 
 /* This is like the hook, but returns NULL when it can't / won't generate