Patchwork [FRV] Hookize CLASS_LIKELY_SPILLED_P

login
register
mail settings
Submitter Anatoly Sokolov
Date Sept. 5, 2010, 8:41 p.m.
Message ID <148942246.20100906004111@post.ru>
Download mbox | patch
Permalink /patch/63861/
State New
Headers show

Comments

Anatoly Sokolov - Sept. 5, 2010, 8:41 p.m.
Hi.

  This patch removes obsolete CLASS_LIKELY_SPILLED_P macro from the FRV back
end in the GCC and introduces equivalent TARGET_CLASS_LIKELY_SPILLED_P target
hook.

  Regression tested on frv-unknown-elf.

  OK to install?

        * config/frv/frv.h (CLASS_LIKELY_SPILLED_P): Remove.
        * config/frv/frv-protos.h (frv_class_likely_spilled_p): Remove.
        * config/frv/frv.c (frv_class_likely_spilled_p): Make static. Change
        argument type to reg_class_t. Change result type to bool.
        (TARGET_CLASS_LIKELY_SPILLED_P): Define.


 Anatoly.
Nick Clifton - Sept. 6, 2010, 9:02 a.m.
Hi Anatoly,

>          * config/frv/frv.h (CLASS_LIKELY_SPILLED_P): Remove.
>          * config/frv/frv-protos.h (frv_class_likely_spilled_p): Remove.
>          * config/frv/frv.c (frv_class_likely_spilled_p): Make static. Change
>          argument type to reg_class_t. Change result type to bool.
>          (TARGET_CLASS_LIKELY_SPILLED_P): Define.

Approved - please apply.

Cheers
   Nick

Patch

Index: gcc/config/frv/frv.h
===================================================================
--- gcc/config/frv/frv.h        (revision 163880)
+++ gcc/config/frv/frv.h        (working copy)
@@ -1257,22 +1257,6 @@ 
 #define SECONDARY_OUTPUT_RELOAD_CLASS(CLASS, MODE, X) \
   frv_secondary_reload_class (CLASS, MODE, X)
 
-/* A C expression whose value is nonzero if pseudos that have been assigned to
-   registers of class CLASS would likely be spilled because registers of CLASS
-   are needed for spill registers.
-
-   The default value of this macro returns 1 if CLASS has exactly one register
-   and zero otherwise.  On most machines, this default should be used.  Only
-   define this macro to some other expression if pseudo allocated by
-   `local-alloc.c' end up in memory because their hard registers were needed
-   for spill registers.  If this macro returns nonzero for those classes, those
-   pseudos will only be allocated by `global.c', which knows how to reallocate
-   the pseudo to another register.  If there would not be another register
-   available for reallocation, you should not change the definition of this
-   macro since the only effect of such a definition would be to slow down
-   register allocation.  */
-#define CLASS_LIKELY_SPILLED_P(CLASS) frv_class_likely_spilled_p (CLASS)
-
 /* A C expression for the maximum number of consecutive registers of
    class CLASS needed to hold a value of mode MODE.
 
Index: gcc/config/frv/frv-protos.h
===================================================================
--- gcc/config/frv/frv-protos.h	(revision 163880)
+++ gcc/config/frv/frv-protos.h	(working copy)
@@ -102,7 +102,6 @@ 
 extern enum reg_class frv_secondary_reload_class
                                        (enum reg_class,
                                         enum machine_mode, rtx);
-extern int frv_class_likely_spilled_p  (enum reg_class rclass);
 extern int frv_hard_regno_mode_ok      (int, enum machine_mode);
 extern int frv_hard_regno_nregs                (int, enum machine_mode);
 extern int frv_class_max_nregs         (enum reg_class rclass,
Index: gcc/config/frv/frv.c
===================================================================
--- gcc/config/frv/frv.c        (revision 163880)
+++ gcc/config/frv/frv.c        (working copy)
@@ -391,6 +391,7 @@ 
 static bool frv_frame_pointer_required         (void);
 static bool frv_can_eliminate                  (const int, const int);
 static void frv_trampoline_init                        (rtx, tree, rtx);
+static bool frv_class_likely_spilled_p                 (reg_class_t);
 
 /* Allow us to easily change the default for -malloc-cc.  */
 #ifndef DEFAULT_NO_ALLOC_CC
@@ -481,6 +482,9 @@ 
 #define TARGET_ASM_OUTPUT_DWARF_DTPREL frv_output_dwarf_dtprel
 #endif
 
+#undef TARGET_CLASS_LIKELY_SPILLED_P
+#define TARGET_CLASS_LIKELY_SPILLED_P frv_class_likely_spilled_p
+
 #undef  TARGET_SECONDARY_RELOAD
 #define TARGET_SECONDARY_RELOAD frv_secondary_reload
 
@@ -6533,23 +6537,10 @@ 
 
 }
 
-/* A C expression whose value is nonzero if pseudos that have been assigned to
-   registers of class RCLASS would likely be spilled because registers of RCLASS
-   are needed for spill registers.
+/* Worker function for TARGET_CLASS_LIKELY_SPILLED_P.  */
 
-   The default value of this macro returns 1 if RCLASS has exactly one register
-   and zero otherwise.  On most machines, this default should be used.  Only
-   define this macro to some other expression if pseudo allocated by
-   `local-alloc.c' end up in memory because their hard registers were needed
-   for spill registers.  If this macro returns nonzero for those classes, those
-   pseudos will only be allocated by `global.c', which knows how to reallocate
-   the pseudo to another register.  If there would not be another register
-   available for reallocation, you should not change the definition of this
-   macro since the only effect of such a definition would be to slow down
-   register allocation.  */
-
-int
-frv_class_likely_spilled_p (enum reg_class rclass)
+static bool
+frv_class_likely_spilled_p (reg_class_t rclass)
 {
   switch (rclass)
     {
@@ -6574,10 +6565,10 @@ 
     case EVEN_ACC_REGS:
     case ACC_REGS:
     case ACCG_REGS:
-      return TRUE;
+      return true;
     }
 
-  return FALSE;
+  return false;
 }