gcc/
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 26 Oct 2014 10:40:37 +0000 (10:40 +0000)
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 26 Oct 2014 10:40:37 +0000 (10:40 +0000)
* config/mep/mep.c: Include rtl-iter.h.
(global_reg_mentioned_p_1): Take a const_rtx and return a bool.
(xtensa_tls_referenced_p): Return a bool.  Use FOR_EACH_SUBRTX.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216704 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/mep/mep.c

index 23405db..f46de9a 100644 (file)
@@ -1,5 +1,11 @@
 2014-10-26  Richard Sandiford  <richard.sandiford@arm.com>
 
+       * config/mep/mep.c: Include rtl-iter.h.
+       (global_reg_mentioned_p_1): Take a const_rtx and return a bool.
+       (xtensa_tls_referenced_p): Return a bool.  Use FOR_EACH_SUBRTX.
+
+2014-10-26  Richard Sandiford  <richard.sandiford@arm.com>
+
        * config/xtensa/xtensa.c: Include rtl-iter.h.
        (xtensa_tls_referenced_p_1): Delete.
        (xtensa_tls_referenced_p): Use FOR_EACH_SUBRTX.
index 26d3ff9..a99f37e 100644 (file)
@@ -69,6 +69,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "opts.h"
 #include "dumpfile.h"
 #include "builtins.h"
+#include "rtl-iter.h"
 
 /* Structure of this file:
 
@@ -6367,14 +6368,10 @@ mep_vector_mode_supported_p (enum machine_mode mode ATTRIBUTE_UNUSED)
 /* A subroutine of global_reg_mentioned_p, returns 1 if *LOC mentions
    a global register.  */
 
-static int
-global_reg_mentioned_p_1 (rtx *loc, void *data ATTRIBUTE_UNUSED)
+static bool
+global_reg_mentioned_p_1 (const_rtx x)
 {
   int regno;
-  rtx x = *loc;
-
-  if (! x)
-    return 0;
 
   switch (GET_CODE (x))
     {
@@ -6383,40 +6380,31 @@ global_reg_mentioned_p_1 (rtx *loc, void *data ATTRIBUTE_UNUSED)
        {
          if (REGNO (SUBREG_REG (x)) < FIRST_PSEUDO_REGISTER
              && global_regs[subreg_regno (x)])
-           return 1;
-         return 0;
+           return true;
+         return false;
        }
       break;
 
     case REG:
       regno = REGNO (x);
       if (regno < FIRST_PSEUDO_REGISTER && global_regs[regno])
-       return 1;
-      return 0;
-
-    case SCRATCH:
-    case PC:
-    case CC0:
-    case CONST_INT:
-    case CONST_DOUBLE:
-    case CONST:
-    case LABEL_REF:
-      return 0;
+       return true;
+      return false;
 
     case CALL:
       /* A non-constant call might use a global register.  */
-      return 1;
+      return true;
 
     default:
       break;
     }
 
-  return 0;
+  return false;
 }
 
 /* Returns nonzero if X mentions a global register.  */
 
-static int
+static bool
 global_reg_mentioned_p (rtx x)
 {
   if (INSN_P (x))
@@ -6424,16 +6412,20 @@ global_reg_mentioned_p (rtx x)
       if (CALL_P (x))
        {
          if (! RTL_CONST_OR_PURE_CALL_P (x))
-           return 1;
+           return true;
          x = CALL_INSN_FUNCTION_USAGE (x);
          if (x == 0)
-           return 0;
+           return false;
        }
       else
        x = PATTERN (x);
     }
 
-  return for_each_rtx (&x, global_reg_mentioned_p_1, NULL);
+  subrtx_iterator::array_type array;
+  FOR_EACH_SUBRTX (iter, array, x, NONCONST)
+    if (global_reg_mentioned_p_1 (*iter))
+      return true;
+  return false;
 }
 /* Scheduling hooks for VLIW mode.