mips.c (mips_at_reg_p): Delete.
authorRichard Sandiford <richard.sandiford@arm.com>
Sun, 26 Oct 2014 10:42:00 +0000 (10:42 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Sun, 26 Oct 2014 10:42:00 +0000 (10:42 +0000)
gcc/
* config/mips/mips.c (mips_at_reg_p): Delete.
(mips_need_noat_wrapper_p): Use FOR_EACH_SUBRTX.

From-SVN: r216715

gcc/ChangeLog
gcc/config/mips/mips.c

index c10b1ee48b128170bb83b54b9bf788a4e8298f14..89f29edc6d4bbf7d6d50cc974899174546745031 100644 (file)
@@ -1,3 +1,8 @@
+2014-10-26  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * config/mips/mips.c (mips_at_reg_p): Delete.
+       (mips_need_noat_wrapper_p): Use FOR_EACH_SUBRTX.
+
 2014-10-26  Richard Sandiford  <richard.sandiford@arm.com>
 
        * config/mips/mips.c (mips_record_lo_sum): Replace with...
index e0d701b532b5c11b021759cdb0c59ed72abff79d..fc16a409d8108c46049ef054ecf133468b49afd2 100644 (file)
@@ -17528,26 +17528,20 @@ mips_epilogue_uses (unsigned int regno)
   return false;
 }
 
-/* A for_each_rtx callback.  Stop the search if *X is an AT register.  */
-
-static int
-mips_at_reg_p (rtx *x, void *data ATTRIBUTE_UNUSED)
-{
-  return REG_P (*x) && REGNO (*x) == AT_REGNUM;
-}
-
 /* Return true if INSN needs to be wrapped in ".set noat".
    INSN has NOPERANDS operands, stored in OPVEC.  */
 
 static bool
 mips_need_noat_wrapper_p (rtx_insn *insn, rtx *opvec, int noperands)
 {
-  int i;
-
   if (recog_memoized (insn) >= 0)
-    for (i = 0; i < noperands; i++)
-      if (for_each_rtx (&opvec[i], mips_at_reg_p, NULL))
-       return true;
+    {
+      subrtx_iterator::array_type array;
+      for (int i = 0; i < noperands; i++)
+       FOR_EACH_SUBRTX (iter, array, opvec[i], NONCONST)
+         if (REG_P (*iter) && REGNO (*iter) == AT_REGNUM)
+           return true;
+    }
   return false;
 }