alpha-protos.h (some_small_symbolic_operand_int): Take an rtx and return a bool.
authorRichard Sandiford <richard.sandiford@arm.com>
Mon, 27 Oct 2014 18:41:17 +0000 (18:41 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Mon, 27 Oct 2014 18:41:17 +0000 (18:41 +0000)
gcc/
* config/alpha/alpha-protos.h (some_small_symbolic_operand_int):
Take an rtx and return a bool.
* config/alpha/alpha.c (some_small_symbolic_operand_int): Likewise.
Use FOR_EACH_SUBRTX_VAR.
* config/alpha/predicates.md (some_small_symbolic_operand): Update
accordingly.

From-SVN: r216757

gcc/ChangeLog
gcc/config/alpha/alpha-protos.h
gcc/config/alpha/alpha.c
gcc/config/alpha/predicates.md

index 972ed0a817ef002a8e34e165a6ca497550efa4bc..cc6c8ced1f651ecaa396119ea16a75ba2e8a8116 100644 (file)
@@ -1,3 +1,12 @@
+2014-10-27  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * config/alpha/alpha-protos.h (some_small_symbolic_operand_int):
+       Take an rtx and return a bool.
+       * config/alpha/alpha.c (some_small_symbolic_operand_int): Likewise.
+       Use FOR_EACH_SUBRTX_VAR.
+       * config/alpha/predicates.md (some_small_symbolic_operand): Update
+       accordingly.
+
 2014-10-27  Richard Sandiford  <richard.sandiford@arm.com>
 
        * config/alpha/alpha-protos.h (alpha_find_lo_sum_using_gp): Return
index 22c082d756a92a5a55d470ad881124957a65538f..304a668bc04098fe7ca8995f63069036bd49d96c 100644 (file)
@@ -112,6 +112,6 @@ extern HOST_WIDE_INT alpha_vms_initial_elimination_offset (unsigned int,
 
 extern rtx unicosmk_add_call_info_word (rtx);
 
-extern int some_small_symbolic_operand_int (rtx *, void *);
+extern bool some_small_symbolic_operand_int (rtx);
 extern int tls_symbolic_operand_1 (rtx, int, int);
 extern rtx resolve_reload_operand (rtx);
index 966999c26a9d86b7a0f47273eac83375eb964720..ba8b249b9bdb873034032bd1b6143e19b5f13b60 100644 (file)
@@ -1233,16 +1233,20 @@ alpha_function_ok_for_sibcall (tree decl, tree exp ATTRIBUTE_UNUSED)
   return decl_has_samegp (decl);
 }
 
-int
-some_small_symbolic_operand_int (rtx *px, void *data ATTRIBUTE_UNUSED)
+bool
+some_small_symbolic_operand_int (rtx x)
 {
-  rtx x = *px;
-
-  /* Don't re-split.  */
-  if (GET_CODE (x) == LO_SUM)
-    return -1;
-
-  return small_symbolic_operand (x, Pmode) != 0;
+  subrtx_var_iterator::array_type array;
+  FOR_EACH_SUBRTX_VAR (iter, array, x, ALL)
+    {
+      rtx x = *iter;
+      /* Don't re-split.  */
+      if (GET_CODE (x) == LO_SUM)
+       iter.skip_subrtxes ();
+      else if (small_symbolic_operand (x, Pmode))
+       return true;
+    }
+  return false;
 }
 
 rtx
index c68e83a701326cbcf676390934506bfc5cb15dc4..9cf7452dc9d1d498e12f85fb1ca9676f807ea691 100644 (file)
   /* Avoid search unless necessary.  */
   if (!TARGET_EXPLICIT_RELOCS || !reload_completed)
     return false;
-  return for_each_rtx (&op, some_small_symbolic_operand_int, NULL);
+  return some_small_symbolic_operand_int (op);
 })
 
 ;; Accept a register, or a memory if BWX is enabled.