From: Richard Stallman Date: Sat, 18 Apr 1992 19:40:49 +0000 (+0000) Subject: *** empty log message *** X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=aeedc93fbae3f9aa761121167020569b65fb01d9;p=gcc.git *** empty log message *** From-SVN: r779 --- diff --git a/gcc/expmed.c b/gcc/expmed.c index 78a0e5f44cf..4b0f77daa6a 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -66,26 +66,26 @@ init_expmed () rtx lea; int i, dummy; - add_cost = rtx_cost (gen_rtx (PLUS, word_mode, reg, reg)); + add_cost = rtx_cost (gen_rtx (PLUS, word_mode, reg, reg), SET); shift_cost = rtx_cost (gen_rtx (LSHIFT, word_mode, reg, /* Using a constant gives better estimate of typical costs. 1 or 2 might have quirks. */ - gen_rtx (CONST_INT, VOIDmode, 3))); - mult_cost = rtx_cost (gen_rtx (MULT, word_mode, reg, reg)); - negate_cost = rtx_cost (gen_rtx (NEG, word_mode, reg)); + gen_rtx (CONST_INT, VOIDmode, 3)), SET); + mult_cost = rtx_cost (gen_rtx (MULT, word_mode, reg, reg), SET); + negate_cost = rtx_cost (gen_rtx (NEG, word_mode, reg), SET); /* 999999 is chosen to avoid any plausible faster special case. */ mult_is_very_cheap = (rtx_cost (gen_rtx (MULT, word_mode, reg, - gen_rtx (CONST_INT, VOIDmode, 999999))) + gen_rtx (CONST_INT, VOIDmode, 999999)), SET) < rtx_cost (gen_rtx (LSHIFT, word_mode, reg, - gen_rtx (CONST_INT, VOIDmode, 7)))); + gen_rtx (CONST_INT, VOIDmode, 7)), SET)); sdiv_pow2_cheap - = rtx_cost (gen_rtx (DIV, word_mode, reg, pow2)) <= 2 * add_cost; + = rtx_cost (gen_rtx (DIV, word_mode, reg, pow2), SET) <= 2 * add_cost; smod_pow2_cheap - = rtx_cost (gen_rtx (MOD, word_mode, reg, pow2)) <= 2 * add_cost; + = rtx_cost (gen_rtx (MOD, word_mode, reg, pow2), SET) <= 2 * add_cost; init_recog (); for (i = 2;; i <<= 1) @@ -100,7 +100,7 @@ init_expmed () if (recog (lea, 0, &dummy) < 0) break; lea_max_mul = i; - lea_cost = rtx_cost (SET_SRC (lea)); + lea_cost = rtx_cost (SET_SRC (lea), SET); } /* Free the objects we just allocated. */ diff --git a/gcc/optabs.c b/gcc/optabs.c index 52e13eb4c72..7640c4f2d62 100644 --- a/gcc/optabs.c +++ b/gcc/optabs.c @@ -229,10 +229,12 @@ expand_binop (mode, binoptab, op0, op1, target, unsignedp, methods) /* If we are inside an appropriately-short loop and one operand is an expensive constant, force it into a register. */ - if (CONSTANT_P (op0) && preserve_subexpressions_p () && rtx_cost (op0) > 2) + if (CONSTANT_P (op0) && preserve_subexpressions_p () + && rtx_cost (op0, binoptab->code) > 2) op0 = force_reg (mode, op0); - if (CONSTANT_P (op1) && preserve_subexpressions_p () && rtx_cost (op1) > 2) + if (CONSTANT_P (op1) && preserve_subexpressions_p () + && rtx_cost (op1, binoptab->code) > 2) op1 = force_reg (shift_op ? word_mode : mode, op1); #if 0 /* Turned off because it seems to be a kludgy method. */ @@ -871,10 +873,12 @@ expand_twoval_binop (binoptab, op0, op1, targ0, targ1, unsignedp) /* If we are inside an appropriately-short loop and one operand is an expensive constant, force it into a register. */ - if (CONSTANT_P (op0) && preserve_subexpressions_p () && rtx_cost (op0) > 2) + if (CONSTANT_P (op0) && preserve_subexpressions_p () + && rtx_cost (op0, binoptab->code) > 2) op0 = force_reg (mode, op0); - if (CONSTANT_P (op1) && preserve_subexpressions_p () && rtx_cost (op1) > 2) + if (CONSTANT_P (op1) && preserve_subexpressions_p () + && rtx_cost (op1, binoptab->code) > 2) op1 = force_reg (mode, op1); if (targ0) @@ -1450,10 +1454,10 @@ emit_cmp_insn (x, y, comparison, size, mode, unsignedp, align) /* If we are inside an appropriately-short loop and one operand is an expensive constant, force it into a register. */ - if (CONSTANT_P (x) && preserve_subexpressions_p () && rtx_cost (x) > 2) + if (CONSTANT_P (x) && preserve_subexpressions_p () && rtx_cost (x, COMPARE) > 2) x = force_reg (mode, x); - if (CONSTANT_P (y) && preserve_subexpressions_p () && rtx_cost (y) > 2) + if (CONSTANT_P (y) && preserve_subexpressions_p () && rtx_cost (y, COMPARE) > 2) y = force_reg (mode, y); /* Don't let both operands fail to indicate the mode. */