diff options
author | Richard Henderson <rth@redhat.com> | 2004-09-20 13:13:39 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2004-09-20 13:13:39 -0700 |
commit | 04161e2bde5dee7dbe9c7863f3cb6f262c8d059c (patch) | |
tree | e555e53fea5983df0a8d4e530fda2c6699639b63 | |
parent | bb033fd8060e36e8bafdebec388e5fa91d073d61 (diff) | |
download | gcc-04161e2bde5dee7dbe9c7863f3cb6f262c8d059c.zip gcc-04161e2bde5dee7dbe9c7863f3cb6f262c8d059c.tar.gz gcc-04161e2bde5dee7dbe9c7863f3cb6f262c8d059c.tar.bz2 |
alpha.c (some_small_symbolic_operand_int): Rename from some_small_symbolic_operand_1; export.
* 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
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/config/alpha/alpha-protos.h | 2 | ||||
-rw-r--r-- | gcc/config/alpha/alpha.c | 19 | ||||
-rw-r--r-- | gcc/config/alpha/alpha.md | 2 | ||||
-rw-r--r-- | gcc/config/alpha/predicates.md | 13 |
5 files changed, 26 insertions, 19 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1f0ddd6..d4902b7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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. diff --git a/gcc/config/alpha/alpha-protos.h b/gcc/config/alpha/alpha-protos.h index f8fded8..22687ed 100644 --- a/gcc/config/alpha/alpha-protos.h +++ b/gcc/config/alpha/alpha-protos.h @@ -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); diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index 21aa382..122dea8 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -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) { diff --git a/gcc/config/alpha/alpha.md b/gcc/config/alpha/alpha.md index 1890c95..09967b5 100644 --- a/gcc/config/alpha/alpha.md +++ b/gcc/config/alpha/alpha.md @@ -5348,7 +5348,7 @@ (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]);") diff --git a/gcc/config/alpha/predicates.md b/gcc/config/alpha/predicates.md index 56486bc..b060dd1 100644 --- a/gcc/config/alpha/predicates.md +++ b/gcc/config/alpha/predicates.md @@ -550,3 +550,16 @@ (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); +}) |