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:
parent
bb033fd806
commit
04161e2bde
|
@ -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.
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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]);")
|
||||
|
||||
|
|
|
@ -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);
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue