alpha.c (some_small_symbolic_operand_int): Rename from some_small_symbolic_operand_1...
authorRichard Henderson <rth@redhat.com>
Mon, 20 Sep 2004 20:13:39 +0000 (13:13 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Mon, 20 Sep 2004 20:13:39 +0000 (13:13 -0700)
        * config/alpha/alpha.c (some_small_symbolic_operand_int): Rename
        from some_small_symbolic_operand_1; export.
        (some_small_symbolic_operand): Remove.
        * config/alpha/alpha.md (some_small_symbolic_operand splitter): Remove
        extra C check.
        * config/alpha/predicates.md (some_small_symbolic_operand): New.

From-SVN: r87769

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

index 1f0ddd6c6a306bc6e6f43448df62d664fc48995c..d4902b7d078ca84378b81bf2288bb1261ad7e3d6 100644 (file)
@@ -1,3 +1,12 @@
+2004-09-20  Richard Henderson  <rth@redhat.com>
+
+       * config/alpha/alpha.c (some_small_symbolic_operand_int): Rename
+       from some_small_symbolic_operand_1; export.
+       (some_small_symbolic_operand): Remove.
+       * config/alpha/alpha.md (some_small_symbolic_operand splitter): Remove
+       extra C check.
+       * config/alpha/predicates.md (some_small_symbolic_operand): New.
+
 2004-09-20  Jan Hubicka  <jh@suse.cz>
 
        * predict.c (return_prediction): New function.
index f8fded816ed1b89535dc86c58c44ad32d9e9bfd3..22687ed12f79c3f7558c999d994f803ffeba315c 100644 (file)
@@ -122,6 +122,6 @@ extern void unicosmk_output_common (FILE *, const char *, int, int);
 extern int unicosmk_initial_elimination_offset (int, int);
 #endif
 
-extern int some_small_symbolic_operand (rtx, enum machine_mode);
+extern int some_small_symbolic_operand_int (rtx *, void *);
 extern int tls_symbolic_operand_1 (rtx, int, int);
 extern rtx resolve_reload_operand (rtx);
index 21aa38227973192913ca9bf58ff4ac0ec5238718..122dea89822f0fe09f71569a76a8fa33eccdec40 100644 (file)
@@ -1208,17 +1208,8 @@ alpha_function_ok_for_sibcall (tree decl, tree exp ATTRIBUTE_UNUSED)
   return decl_has_samegp (decl);
 }
 
-/* For TARGET_EXPLICIT_RELOCS, we don't obfuscate a SYMBOL_REF to a
-   small symbolic operand until after reload.  At which point we need
-   to replace (mem (symbol_ref)) with (mem (lo_sum $29 symbol_ref))
-   so that sched2 has the proper dependency information.  */
-/*
-  {"some_small_symbolic_operand", {SET, PARALLEL, PREFETCH, UNSPEC,    \
-                                  UNSPEC_VOLATILE}},
-*/
-
-static int
-some_small_symbolic_operand_1 (rtx *px, void *data ATTRIBUTE_UNUSED)
+int
+some_small_symbolic_operand_int (rtx *px, void *data ATTRIBUTE_UNUSED)
 {
   rtx x = *px;
 
@@ -1229,12 +1220,6 @@ some_small_symbolic_operand_1 (rtx *px, void *data ATTRIBUTE_UNUSED)
   return small_symbolic_operand (x, Pmode) != 0;
 }
 
-int
-some_small_symbolic_operand (rtx x, enum machine_mode mode ATTRIBUTE_UNUSED)
-{
-  return for_each_rtx (&x, some_small_symbolic_operand_1, NULL);
-}
-
 static int
 split_small_symbolic_operand_1 (rtx *px, void *data ATTRIBUTE_UNUSED)
 {
index 1890c951d0c1c39b9b068aa22c35bc94afcc6297..09967b5841701bf28eba7fde5d88b2809fa5ad81 100644 (file)
 
 (define_split
   [(match_operand 0 "some_small_symbolic_operand" "")]
-  "TARGET_EXPLICIT_RELOCS && reload_completed"
+  ""
   [(match_dup 0)]
   "operands[0] = split_small_symbolic_operand (operands[0]);")
 
index 56486bcb0feda697e6624dba0156154cea2f6777..b060dd17741d7e5f3caabda5859ccb5fcdaa737f 100644 (file)
        (match_test "register_operand (XEXP (op, 0), mode)
                    && GET_CODE (XEXP (op, 1)) == CONST_INT
                    && CONST_OK_FOR_LETTER_P (INTVAL (XEXP (op, 1)), 'K')")))
+
+;; For TARGET_EXPLICIT_RELOCS, we don't obfuscate a SYMBOL_REF to a
+;; small symbolic operand until after reload.  At which point we need
+;; to replace (mem (symbol_ref)) with (mem (lo_sum $29 symbol_ref))
+;; so that sched2 has the proper dependency information.  */
+(define_predicate "some_small_symbolic_operand"
+  (match_code "set,parallel,prefetch,unspec,unspec_volatile")
+{
+  /* Avoid search unless necessary.  */
+  if (!TARGET_EXPLICIT_RELOCS || !reload_completed)
+    return false;
+  return for_each_rtx (&op, some_small_symbolic_operand_int, NULL);
+})