From: Anatoly Sokolov Date: Thu, 30 Sep 2010 20:54:27 +0000 (+0400) Subject: m32c.c (cris_memory_move_cost): New. X-Git-Tag: releases/gcc-4.6.0~4013 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b95491a041e1c7da0aaab650e4f3cad2c341baae;p=thirdparty%2Fgcc.git m32c.c (cris_memory_move_cost): New. * config/cris/m32c.c (cris_memory_move_cost): New. (cris_register_move_cost): Make static. Change arguments type from enum reg_class to reg_class_t. (TARGET_REGISTER_MOVE_COST, TARGET_MEMORY_MOVE_COST): Define. * config/cris/cris.h (REGISTER_MOVE_COST, MEMORY_MOVE_COST): Remove. * config/cris/cris-protos.h (cris_register_move_cost): Remove. From-SVN: r164768 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b82c99de6e81..0409d96d21d6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2010-09-30 Anatoly Sokolov + + * config/cris/m32c.c (cris_memory_move_cost): New. + (cris_register_move_cost): Make static. Change arguments type from + enum reg_class to reg_class_t. + (TARGET_REGISTER_MOVE_COST, TARGET_MEMORY_MOVE_COST): Define. + * config/cris/cris.h (REGISTER_MOVE_COST, MEMORY_MOVE_COST): Remove. + * config/cris/cris-protos.h (cris_register_move_cost): Remove. + 2010-09-30 Jakub Jelinek PR target/45843 diff --git a/gcc/config/cris/cris-protos.h b/gcc/config/cris/cris-protos.h index 84191c0920b1..16acb52c4edc 100644 --- a/gcc/config/cris/cris-protos.h +++ b/gcc/config/cris/cris-protos.h @@ -31,8 +31,6 @@ extern bool cris_simple_epilogue (void); extern const char *cris_op_str (rtx); extern void cris_notice_update_cc (rtx, rtx); extern bool cris_reload_address_legitimized (rtx, enum machine_mode, int, int, int); -extern int cris_register_move_cost (enum machine_mode, enum reg_class, - enum reg_class); extern int cris_side_effect_mode_ok (enum rtx_code, rtx *, int, int, int, int, int); extern bool cris_cc0_user_requires_cmp (rtx); diff --git a/gcc/config/cris/cris.c b/gcc/config/cris/cris.c index 52367c2c71d0..3163022b6612 100644 --- a/gcc/config/cris/cris.c +++ b/gcc/config/cris/cris.c @@ -121,6 +121,8 @@ static void cris_asm_output_mi_thunk static void cris_file_start (void); static void cris_init_libfuncs (void); +static int cris_register_move_cost (enum machine_mode, reg_class_t, reg_class_t); +static int cris_memory_move_cost (enum machine_mode, reg_class_t, bool); static bool cris_rtx_costs (rtx, int, int, int *, bool); static int cris_address_cost (rtx, bool); static bool cris_pass_by_reference (CUMULATIVE_ARGS *, enum machine_mode, @@ -185,6 +187,10 @@ int cris_cpu_version = CRIS_DEFAULT_CPU_VERSION; #undef TARGET_INIT_LIBFUNCS #define TARGET_INIT_LIBFUNCS cris_init_libfuncs +#undef TARGET_REGISTER_MOVE_COST +#define TARGET_REGISTER_MOVE_COST cris_register_move_cost +#undef TARGET_MEMORY_MOVE_COST +#define TARGET_MEMORY_MOVE_COST cris_memory_move_cost #undef TARGET_RTX_COSTS #define TARGET_RTX_COSTS cris_rtx_costs #undef TARGET_ADDRESS_COST @@ -1378,11 +1384,11 @@ cris_reload_address_legitimized (rtx x, return false; } -/* Worker function for REGISTER_MOVE_COST. */ +/* Worker function for TARGET_REGISTER_MOVE_COST. */ -int +static int cris_register_move_cost (enum machine_mode mode ATTRIBUTE_UNUSED, - enum reg_class from, enum reg_class to) + reg_class_t from, reg_class_t to) { if (!TARGET_V32) { @@ -1424,6 +1430,23 @@ cris_register_move_cost (enum machine_mode mode ATTRIBUTE_UNUSED, return 2; } +/* Worker function for TARGET_MEMORY_MOVE_COST. + + This isn't strictly correct for v0..3 in buswidth-8bit mode, but should + suffice. */ + +static int +cris_memory_move_cost (enum machine_mode mode, + reg_class_t rclass ATTRIBUTE_UNUSED, + bool in ATTRIBUTE_UNUSED) +{ + if (mode == QImode + || mode == HImode) + return 4; + else + return 6; +} + /* Worker for cris_notice_update_cc; handles the "normal" cases. FIXME: this code is historical; its functionality should be refactored to look at insn attributes and moved to diff --git a/gcc/config/cris/cris.h b/gcc/config/cris/cris.h index cd4a22d23a3b..090bcd120848 100644 --- a/gcc/config/cris/cris.h +++ b/gcc/config/cris/cris.h @@ -1073,14 +1073,6 @@ struct cum_args {int regs;}; /* Node: Costs */ -#define REGISTER_MOVE_COST(MODE, FROM, TO) \ - cris_register_move_cost (MODE, FROM, TO) - -/* This isn't strictly correct for v0..3 in buswidth-8bit mode, but - should suffice. */ -#define MEMORY_MOVE_COST(M, CLASS, IN) \ - (((M) == QImode) ? 4 : ((M) == HImode) ? 4 : 6) - /* Regardless of the presence of delay slots, the default value of 1 for BRANCH_COST is the best in the range (1, 2, 3), tested with gcc-2.7.2 with testcases ipps and gcc, giving smallest and fastest code. */