From 665acd1ef23f8d1429207fec05c4c0e232d0aa75 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Wed, 21 Apr 2004 17:02:19 +0000 Subject: [PATCH] expmed.c (expand_mult_highpart_optab): Use narrower version of OP1 in two more places; remove unneeded force_reg * expmed.c (expand_mult_highpart_optab): Use narrower version of OP1 in two more places; remove unneeded force_reg From-SVN: r80969 --- gcc/ChangeLog | 5 +++++ gcc/expmed.c | 12 +++++------- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3fc6309c5f5..1e5ac10935c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-04-21 Richard Kenner + + * expmed.c (expand_mult_highpart_optab): Use narrower version of OP1 + in two more places; remove unneeded force_reg + 2004-04-21 Andrew Pinski * config/rs6000/rs6000.c (symbol_ref_operand): Remove hack diff --git a/gcc/expmed.c b/gcc/expmed.c index 3fb76b45a54..3eb745465da 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -2883,6 +2883,7 @@ static rtx expand_mult_highpart_optab (enum machine_mode mode, rtx op0, rtx op1, rtx target, int unsignedp, int max_cost) { + rtx narrow_op1 = gen_int_mode (INTVAL (op1), mode); enum machine_mode wider_mode; optab moptab; rtx tem; @@ -2896,8 +2897,7 @@ expand_mult_highpart_optab (enum machine_mode mode, rtx op0, rtx op1, if (mul_highpart_cost[(int) mode] < max_cost) { moptab = unsignedp ? umul_highpart_optab : smul_highpart_optab; - tem = expand_binop (mode, moptab, op0, - gen_int_mode (INTVAL (op1), mode), target, + tem = expand_binop (mode, moptab, op0, narrow_op1, target, unsignedp, OPTAB_DIRECT); if (tem) return tem; @@ -2910,8 +2910,7 @@ expand_mult_highpart_optab (enum machine_mode mode, rtx op0, rtx op1, < max_cost)) { moptab = unsignedp ? smul_highpart_optab : umul_highpart_optab; - tem = expand_binop (mode, moptab, op0, - gen_int_mode (INTVAL (op1), mode), target, + tem = expand_binop (mode, moptab, op0, narrow_op1, target, unsignedp, OPTAB_DIRECT); if (tem) /* We used the wrong signedness. Adjust the result. */ @@ -2924,7 +2923,7 @@ expand_mult_highpart_optab (enum machine_mode mode, rtx op0, rtx op1, if (moptab->handlers[(int) wider_mode].insn_code != CODE_FOR_nothing && mul_widen_cost[(int) wider_mode] < max_cost) { - tem = expand_binop (wider_mode, moptab, op0, op1, 0, + tem = expand_binop (wider_mode, moptab, op0, narrow_op1, 0, unsignedp, OPTAB_WIDEN); if (tem) return extract_high_half (mode, tem); @@ -2949,8 +2948,7 @@ expand_mult_highpart_optab (enum machine_mode mode, rtx op0, rtx op1, && (mul_widen_cost[(int) wider_mode] + 2 * shift_cost[size-1] + 4 * add_cost < max_cost)) { - rtx regop1 = force_reg (mode, op1); - tem = expand_binop (wider_mode, moptab, op0, regop1, + tem = expand_binop (wider_mode, moptab, op0, narrow_op1, NULL_RTX, ! unsignedp, OPTAB_WIDEN); if (tem != 0) { -- 2.30.2