diff options
Diffstat (limited to 'gcc/config/ia64/ia64.c')
-rw-r--r-- | gcc/config/ia64/ia64.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c index 64fbe21..fef6839 100644 --- a/gcc/config/ia64/ia64.c +++ b/gcc/config/ia64/ia64.c @@ -233,7 +233,7 @@ static int ia64_register_move_cost (machine_mode, reg_class_t, reg_class_t); static int ia64_memory_move_cost (machine_mode mode, reg_class_t, bool); -static bool ia64_rtx_costs (rtx, int, int, int, int *, bool); +static bool ia64_rtx_costs (rtx, machine_mode, int, int, int *, bool); static int ia64_unspec_may_trap_p (const_rtx, unsigned); static void fix_range (const char *); static struct machine_function * ia64_init_machine_status (void); @@ -5590,9 +5590,12 @@ ia64_print_operand_punct_valid_p (unsigned char code) /* ??? This is incomplete. */ static bool -ia64_rtx_costs (rtx x, int code, int outer_code, int opno ATTRIBUTE_UNUSED, +ia64_rtx_costs (rtx x, machine_mode mode, int outer_code, + int opno ATTRIBUTE_UNUSED, int *total, bool speed ATTRIBUTE_UNUSED) { + int code = GET_CODE (x); + switch (code) { case CONST_INT: @@ -5636,9 +5639,9 @@ ia64_rtx_costs (rtx x, int code, int outer_code, int opno ATTRIBUTE_UNUSED, which normally involves copies. Plus there's the latency of the multiply itself, and the latency of the instructions to transfer integer regs to FP regs. */ - if (FLOAT_MODE_P (GET_MODE (x))) + if (FLOAT_MODE_P (mode)) *total = COSTS_N_INSNS (4); - else if (GET_MODE_SIZE (GET_MODE (x)) > 2) + else if (GET_MODE_SIZE (mode) > 2) *total = COSTS_N_INSNS (10); else *total = COSTS_N_INSNS (2); @@ -5646,7 +5649,7 @@ ia64_rtx_costs (rtx x, int code, int outer_code, int opno ATTRIBUTE_UNUSED, case PLUS: case MINUS: - if (FLOAT_MODE_P (GET_MODE (x))) + if (FLOAT_MODE_P (mode)) { *total = COSTS_N_INSNS (4); return true; |