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
This commit is contained in:
Richard Henderson 2004-09-20 13:13:39 -07:00 committed by Richard Henderson
parent bb033fd806
commit 04161e2bde
5 changed files with 26 additions and 19 deletions

View 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.

View 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);

View 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)
{

View File

@ -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]);")

View File

@ -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);
})