Hi.

This patch removes obsolete PREFERRED_RELOAD_CLASS macro from the SCORE back end in the GCC and introduces equivalent TARGET_PREFERRED_RELOAD_CLASS target hook.

  Untested.

  OK to install?

        * config/score/score.h (PREFERRED_RELOAD_CLASS): Remove.
        * config/score/score-protos.h (score_preferred_reload_class): Remove.
        * config/score/score.c (TARGET_PREFERRED_RELOAD_CLASS: Define.
        (score_preferred_reload_class): Make static. Change return and
        'rclass' argument type to reg_class_t.

Index: gcc/config/score/score.h
===================================================================
--- gcc/config/score/score.h    (revision 182917)
+++ gcc/config/score/score.h    (working copy)
@@ -405,9 +405,6 @@ extern enum reg_class score_char_to_clas

 #define REGNO_OK_FOR_INDEX_P(NUM)       0

-#define PREFERRED_RELOAD_CLASS(X, CLASS) \
-  score_preferred_reload_class (X, CLASS)
-
 /* If we need to load shorts byte-at-a-time, then we need a scratch.  */
 #define SECONDARY_INPUT_RELOAD_CLASS(CLASS, MODE, X) \
   score_secondary_reload_class (CLASS, MODE, X)
Index: gcc/config/score/score-protos.h
===================================================================
--- gcc/config/score/score-protos.h     (revision 182917)
+++ gcc/config/score/score-protos.h     (working copy)
@@ -57,8 +57,6 @@ extern enum reg_class score_secondary_re
                                                     rtx x);
 extern rtx score_function_value (const_tree valtype, const_tree func,
                                  enum machine_mode mode);
-extern enum reg_class score_preferred_reload_class (rtx x,
-                                                    enum reg_class rclass);
 extern HOST_WIDE_INT score_initial_elimination_offset (int from, int to);
 extern void score_print_operand (FILE *file, rtx op, int letter);
 extern void score_print_operand_address (FILE *file, rtx addr);
Index: gcc/config/score/score.c
===================================================================
--- gcc/config/score/score.c    (revision 182917)
+++ gcc/config/score/score.c    (working copy)
@@ -125,6 +125,9 @@ struct extern_list *extern_head = 0;
 #undef TARGET_LEGITIMIZE_ADDRESS
 #define TARGET_LEGITIMIZE_ADDRESS      score_legitimize_address

+#undef TARGET_PREFERRED_RELOAD_CLASS
+#define TARGET_PREFERRED_RELOAD_CLASS  score_preferred_reload_class
+
 #undef  TARGET_SCHED_ISSUE_RATE
 #define TARGET_SCHED_ISSUE_RATE         score_issue_rate

@@ -793,9 +796,9 @@ score_reg_class (int regno)
   return NO_REGS;
 }

-/* Implement PREFERRED_RELOAD_CLASS macro.  */
-enum reg_class
-score_preferred_reload_class (rtx x ATTRIBUTE_UNUSED, enum reg_class rclass)
+/* Implement TARGET_PREFERRED_RELOAD_CLASS hook.  */
+static reg_class_t
+score_preferred_reload_class (rtx x ATTRIBUTE_UNUSED, reg_class_t rclass)
 {
   if (reg_class_subset_p (G16_REGS, rclass))
     return G16_REGS;


--
Anatoly.

Reply via email to