Patchwork [IA64] Hookize PREFERRED_RELOAD_CLASS

login
register
mail settings
Submitter Anatoly Sokolov
Date Oct. 18, 2010, 7:42 p.m.
Message ID <308596926.20101018234211@post.ru>
Download mbox | patch
Permalink /patch/68233/
State New
Headers show

Comments

Anatoly Sokolov - Oct. 18, 2010, 7:42 p.m.
Hello.

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

   Bootstrapped and regression tested on ia64-unknown-linux-gnu.

  OK to install?

        * config/ia64/ia64.h (PREFERRED_RELOAD_CLASS): Remove macros.
        * config/ia64/ia64-protos.h (ia64_preferred_reload_class): Remove.
        * config/ia64/ia64.c (TARGET_PREFERRED_RELOAD_CLASS): Define.
        (ia64_preferred_reload_class): Make static. Change rclass argument
        and result types from enum reg_class to reg_class_t.



Anatoly.
Steve Ellcey - Oct. 18, 2010, 7:48 p.m.
On Mon, 2010-10-18 at 23:42 +0400, Anatoly Sokolov wrote:
> Hello.
> 
>   This patch removes obsolete PREFERRED_RELOAD_CLASS macro from IA64 back end 
> in the GCC and introduces equivalent TARGET_PREFERRED_RELOAD_CLASS target 
> hooks. 
> 
>    Bootstrapped and regression tested on ia64-unknown-linux-gnu.
> 
>   OK to install?
> 
>         * config/ia64/ia64.h (PREFERRED_RELOAD_CLASS): Remove macros.
>         * config/ia64/ia64-protos.h (ia64_preferred_reload_class): Remove.
>         * config/ia64/ia64.c (TARGET_PREFERRED_RELOAD_CLASS): Define.
>         (ia64_preferred_reload_class): Make static. Change rclass argument
>         and result types from enum reg_class to reg_class_t.


OK.

Steve Ellcey
sje@cup.hp.com

Patch

Index: gcc/config/ia64/ia64.c
===================================================================
--- gcc/config/ia64/ia64.c      (revision 165655)
+++ gcc/config/ia64/ia64.c      (working copy)
@@ -324,6 +324,8 @@ 
 
 static void ia64_dwarf_handle_frame_unspec (const char *, rtx, int);
 static tree ia64_builtin_decl (unsigned, bool);
+
+static reg_class_t ia64_preferred_reload_class (rtx, reg_class_t);
 
 /* Table of valid machine attributes.  */
 static const struct attribute_spec ia64_attribute_table[] =
@@ -595,6 +597,9 @@ 
 #undef TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE
 #define TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE ia64_override_options_after_change
 
+#undef TARGET_PREFERRED_RELOAD_CLASS
+#define TARGET_PREFERRED_RELOAD_CLASS ia64_preferred_reload_class
+
 struct gcc_target targetm = TARGET_INITIALIZER;
 
 typedef enum
@@ -5346,11 +5351,11 @@ 
     return 10;
 }
 
-/* Implement PREFERRED_RELOAD_CLASS.  Place additional restrictions on RCLASS
-   to use when copying X into that class.  */
+/* Implement TARGET_PREFERRED_RELOAD_CLASS.  Place additional restrictions
+   on RCLASS to use when copying X into that class.  */
 
-enum reg_class
-ia64_preferred_reload_class (rtx x, enum reg_class rclass)
+static reg_class_t
+ia64_preferred_reload_class (rtx x, reg_class_t rclass)
 {
   switch (rclass)
     {
Index: gcc/config/ia64/ia64.h
===================================================================
--- gcc/config/ia64/ia64.h      (revision 165655)
+++ gcc/config/ia64/ia64.h      (working copy)
@@ -849,14 +849,6 @@ 
    This is needed for POST_MODIFY.  */
 #define REGNO_OK_FOR_INDEX_P(NUM) REGNO_OK_FOR_BASE_P (NUM)
 
-/* A C expression that places additional restrictions on the register class to
-   use when it is necessary to copy value X into a register in class CLASS.
-   The value is a register class; perhaps CLASS, or perhaps another, smaller
-   class.  */
-
-#define PREFERRED_RELOAD_CLASS(X, CLASS) \
-  ia64_preferred_reload_class (X, CLASS)
-
 /* You should define this macro to indicate to the reload phase that it may
    need to allocate at least one register for a reload in addition to the
    register to contain the data.  Specifically, if copying X to a register
Index: gcc/config/ia64/ia64-protos.h
===================================================================
--- gcc/config/ia64/ia64-protos.h       (revision 165655)
+++ gcc/config/ia64/ia64-protos.h       (working copy)
@@ -56,7 +56,6 @@ 
 
 extern void ia64_print_operand_address (FILE *, rtx);
 extern void ia64_print_operand (FILE *, rtx, int);
-extern enum reg_class ia64_preferred_reload_class (rtx, enum reg_class);
 extern enum reg_class ia64_secondary_reload_class (enum reg_class,
                                                   enum machine_mode, rtx);
 extern const char *get_bundle_name (int);