From patchwork Sat Sep 18 14:58:59 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [BFIN] Hookize CLASS_LIKELY_SPILLED_P macro From: Anatoly Sokolov X-Patchwork-Id: 65128 Message-Id: <1331450171.20100918185859@post.ru> To: gcc-patches@gcc.gnu.org Cc: bernds@codesourcery.com, jie@codesourcery.com Date: Sat, 18 Sep 2010 18:58:59 +0400 Hi. This patch removes obsolete CLASS_LIKELY_SPILLED_P macro from the Blackfin back end in the GCC and introduces equivalent TARGET_CLASS_LIKELY_SPILLED_P target hook. Untested. OK to install? * config/bfin/bfin.h (CLASS_LIKELY_SPILLED_P): Remove. * config/bfin/bfin.c (TARGET_CLASS_LIKELY_SPILLED_P): Define. (bfin_class_likely_spilled_p): New function. Anatoly. Index: gcc/config/bfin/bfin.c =================================================================== --- gcc/config/bfin/bfin.c (revision 164010) +++ gcc/config/bfin/bfin.c (working copy) @@ -2543,6 +2543,29 @@ return NO_REGS; } + +/* Implement TARGET_CLASS_LIKELY_SPILLED_P. */ + +static bool +bfin_class_likely_spilled_p (reg_class_t rclass) +{ + switch (rclass) + { + case PREGS_CLOBBERED: + case PROLOGUE_REGS: + case P0REGS: + case D0REGS: + case D1REGS: + case D2REGS: + case CCREGS: + return true; + + default: + break; + } + + return false; +} /* Implement TARGET_HANDLE_OPTION. */ @@ -6632,6 +6655,9 @@ #undef TARGET_SECONDARY_RELOAD #define TARGET_SECONDARY_RELOAD bfin_secondary_reload +#undef TARGET_CLASS_LIKELY_SPILLED_P +#define TARGET_CLASS_LIKELY_SPILLED_P bfin_class_likely_spilled_p + #undef TARGET_DELEGITIMIZE_ADDRESS #define TARGET_DELEGITIMIZE_ADDRESS bfin_delegitimize_address Index: gcc/config/bfin/bfin.h =================================================================== --- gcc/config/bfin/bfin.h (revision 164010) +++ gcc/config/bfin/bfin.h (working copy) @@ -761,15 +761,6 @@ registers. */ #define TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P hook_bool_mode_true -#define CLASS_LIKELY_SPILLED_P(CLASS) \ - ((CLASS) == PREGS_CLOBBERED \ - || (CLASS) == PROLOGUE_REGS \ - || (CLASS) == P0REGS \ - || (CLASS) == D0REGS \ - || (CLASS) == D1REGS \ - || (CLASS) == D2REGS \ - || (CLASS) == CCREGS) - /* Do not allow to store a value in REG_CC for any mode */ /* Do not allow to store value in pregs if mode is not SI*/ #define HARD_REGNO_MODE_OK(REGNO, MODE) hard_regno_mode_ok((REGNO), (MODE))