From: Richard Henderson Date: Mon, 20 Sep 2004 20:13:39 +0000 (-0700) Subject: alpha.c (some_small_symbolic_operand_int): Rename from some_small_symbolic_operand_1... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=04161e2bde5dee7dbe9c7863f3cb6f262c8d059c;p=gcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1f0ddd6c6a3..d4902b7d078 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2004-09-20 Richard Henderson + + * 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 * predict.c (return_prediction): New function. diff --git a/gcc/config/alpha/alpha-protos.h b/gcc/config/alpha/alpha-protos.h index f8fded816ed..22687ed12f7 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 21aa3822797..122dea89822 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 1890c951d0c..09967b58417 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 56486bcb0fe..b060dd17741 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); +})