OSDN Git Service

* config/alpha/alpha.c (some_small_symbolic_operand_int): Rename
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 20 Sep 2004 20:13:39 +0000 (20:13 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 20 Sep 2004 20:13:39 +0000 (20:13 +0000)
        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.

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

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

index 1f0ddd6..d4902b7 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 f8fded8..22687ed 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 21aa382..122dea8 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 1890c95..09967b5 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 56486bc..b060dd1 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);
+})