diff options
Diffstat (limited to 'gcc/config/sh/sh.c')
-rw-r--r-- | gcc/config/sh/sh.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index 5f6558c75a0..71f3a5d7414 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -275,7 +275,7 @@ static int addsubcosts (rtx); static int multcosts (rtx); static bool unspec_caller_rtx_p (rtx); static bool sh_cannot_copy_insn_p (rtx_insn *); -static bool sh_rtx_costs (rtx, int, int, int, int *, bool); +static bool sh_rtx_costs (rtx, machine_mode, int, int, int *, bool); static int sh_address_cost (rtx, machine_mode, addr_space_t, bool); static int sh_pr_n_sets (void); static rtx sh_allocate_initial_value (rtx); @@ -3280,7 +3280,7 @@ and_xor_ior_costs (rtx x, int code) || satisfies_constraint_J16 (XEXP (x, 1))) return 1; else - return 1 + rtx_cost (XEXP (x, 1), AND, 1, !optimize_size); + return 1 + rtx_cost (XEXP (x, 1), GET_MODE (x), AND, 1, !optimize_size); } /* These constants are single cycle extu.[bw] instructions. */ @@ -3420,9 +3420,12 @@ multcosts (rtx x ATTRIBUTE_UNUSED) cost has been computed, and false if subexpressions should be scanned. In either case, *TOTAL contains the cost result. */ static bool -sh_rtx_costs (rtx x, int code, int outer_code, int opno ATTRIBUTE_UNUSED, +sh_rtx_costs (rtx x, machine_mode mode ATTRIBUTE_UNUSED, int outer_code, + int opno ATTRIBUTE_UNUSED, int *total, bool speed ATTRIBUTE_UNUSED) { + int code = GET_CODE (x); + switch (code) { /* The lower-subreg pass decides whether to split multi-word regs |