From 33124e84a822225b1a2bc5a157da4d22212df624 Mon Sep 17 00:00:00 2001 From: Anatoly Sokolov Date: Mon, 13 Sep 2010 00:33:15 +0400 Subject: frv.h (REGISTER_MOVE_COST, [...]): Remove. * config/frv/frv.h (REGISTER_MOVE_COST, MEMORY_MOVE_COST): Remove. * config/frv/frv-protos.h (frv_register_move_cost): Remove. * config/frv/frv.c (frv_register_move_cost): Make static. Change arguments type to reg_class_t. Add mode argument. (frv_memory_move_cost): New. (TARGET_REGISTER_MOVE_COSTS, TARGET_MEMORY_MOVE_COSTS): Define. From-SVN: r164233 --- gcc/ChangeLog | 9 +++++++++ gcc/config/frv/frv-protos.h | 1 - gcc/config/frv/frv.c | 41 ++++++++++++++++++++++++----------------- gcc/config/frv/frv.h | 25 ------------------------- 4 files changed, 33 insertions(+), 43 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9a20981..db8a1fd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2010-09-12 Anatoly Sokolov + + * config/frv/frv.h (REGISTER_MOVE_COST, MEMORY_MOVE_COST): Remove. + * config/frv/frv-protos.h (frv_register_move_cost): Remove. + * config/frv/frv.c (frv_register_move_cost): Make static. Change + arguments type to reg_class_t. Add mode argument. + (frv_memory_move_cost): New. + (TARGET_REGISTER_MOVE_COSTS, TARGET_MEMORY_MOVE_COSTS): Define. + 2010-09-12 Bernd Schmidt * config/arm/arm.md (arm_ashldi3_1bit, arm_ashrdi3_1bit, diff --git a/gcc/config/frv/frv-protos.h b/gcc/config/frv/frv-protos.h index 8ed14fa..976a71e 100644 --- a/gcc/config/frv/frv-protos.h +++ b/gcc/config/frv/frv-protos.h @@ -111,7 +111,6 @@ extern enum machine_mode frv_select_cc_mode (enum rtx_code, rtx, rtx); #endif /* RTX_CODE */ extern int direct_return_p (void); -extern int frv_register_move_cost (enum reg_class, enum reg_class); extern int frv_issue_rate (void); extern int frv_acc_group (rtx); diff --git a/gcc/config/frv/frv.c b/gcc/config/frv/frv.c index ccb6fe9..8560bc1 100644 --- a/gcc/config/frv/frv.c +++ b/gcc/config/frv/frv.c @@ -371,6 +371,10 @@ static void frv_setup_incoming_varargs (CUMULATIVE_ARGS *, static rtx frv_expand_builtin_saveregs (void); static void frv_expand_builtin_va_start (tree, rtx); static bool frv_rtx_costs (rtx, int, int, int*, bool); +static int frv_register_move_cost (enum machine_mode, + reg_class_t, reg_class_t); +static int frv_memory_move_cost (enum machine_mode, + reg_class_t, bool); static void frv_asm_out_constructor (rtx, int); static void frv_asm_out_destructor (rtx, int); static bool frv_function_symbol_referenced_p (rtx); @@ -432,6 +436,10 @@ static bool frv_class_likely_spilled_p (reg_class_t); #define TARGET_INIT_LIBFUNCS frv_init_libfuncs #undef TARGET_IN_SMALL_DATA_P #define TARGET_IN_SMALL_DATA_P frv_in_small_data_p +#undef TARGET_REGISTER_MOVE_COST +#define TARGET_REGISTER_MOVE_COST frv_register_move_cost +#undef TARGET_MEMORY_MOVE_COST +#define TARGET_MEMORY_MOVE_COST frv_memory_move_cost #undef TARGET_RTX_COSTS #define TARGET_RTX_COSTS frv_rtx_costs #undef TARGET_ASM_CONSTRUCTOR @@ -6908,28 +6916,16 @@ frv_select_cc_mode (enum rtx_code code, rtx x, rtx y) } } -/* A C expression for the cost of moving data from a register in class FROM to - one in class TO. The classes are expressed using the enumeration values - such as `GENERAL_REGS'. A value of 4 is the default; other values are - interpreted relative to that. - - It is not required that the cost always equal 2 when FROM is the same as TO; - on some machines it is expensive to move between registers if they are not - general registers. - - If reload sees an insn consisting of a single `set' between two hard - registers, and if `REGISTER_MOVE_COST' applied to their classes returns a - value of 2, reload does not check to ensure that the constraints of the insn - are met. Setting a cost of other than 2 will allow reload to verify that - the constraints are met. You should do this if the `movM' pattern's - constraints do not allow such copying. */ + +/* Worker function for TARGET_REGISTER_MOVE_COST. */ #define HIGH_COST 40 #define MEDIUM_COST 3 #define LOW_COST 1 -int -frv_register_move_cost (enum reg_class from, enum reg_class to) +static int +frv_register_move_cost (enum machine_mode mode ATTRIBUTE_UNUSED, + reg_class_t from, reg_class_t to) { switch (from) { @@ -7012,6 +7008,17 @@ frv_register_move_cost (enum reg_class from, enum reg_class to) return HIGH_COST; } + +/* Worker function for TARGET_MEMORY_MOVE_COST. */ + +static int +frv_memory_move_cost (enum machine_mode mode ATTRIBUTE_UNUSED, + reg_class_t rclass ATTRIBUTE_UNUSED, + bool in ATTRIBUTE_UNUSED) +{ + return 4; +} + /* Implementation of TARGET_ASM_INTEGER. In the FRV case we need to use ".picptr" to generate safe relocations for PIC code. We also diff --git a/gcc/config/frv/frv.h b/gcc/config/frv/frv.h index 79ff6f3..75acccb 100644 --- a/gcc/config/frv/frv.h +++ b/gcc/config/frv/frv.h @@ -1946,31 +1946,6 @@ __asm__("\n" \ /* Describing Relative Costs of Operations. */ -/* A C expression for the cost of moving data from a register in class FROM to - one in class TO. The classes are expressed using the enumeration values - such as `GENERAL_REGS'. A value of 4 is the default; other values are - interpreted relative to that. - - It is not required that the cost always equal 2 when FROM is the same as TO; - on some machines it is expensive to move between registers if they are not - general registers. - - If reload sees an insn consisting of a single `set' between two hard - registers, and if `REGISTER_MOVE_COST' applied to their classes returns a - value of 2, reload does not check to ensure that the constraints of the insn - are met. Setting a cost of other than 2 will allow reload to verify that - the constraints are met. You should do this if the `movM' pattern's - constraints do not allow such copying. */ -#define REGISTER_MOVE_COST(MODE, FROM, TO) frv_register_move_cost (FROM, TO) - -/* A C expression for the cost of moving data of mode M between a register and - memory. A value of 2 is the default; this cost is relative to those in - `REGISTER_MOVE_COST'. - - If moving between registers and memory is more expensive than between two - registers, you should define this macro to express the relative cost. */ -#define MEMORY_MOVE_COST(M,C,I) 4 - /* A C expression for the cost of a branch instruction. A value of 1 is the default; other values are interpreted relative to that. */ #define BRANCH_COST(speed_p, predictable_p) frv_branch_cost_int -- cgit v1.1