diff options
author | Richard Stallman <rms@gnu.org> | 1992-04-18 19:40:49 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1992-04-18 19:40:49 +0000 |
commit | aeedc93fbae3f9aa761121167020569b65fb01d9 (patch) | |
tree | f5013dec08b4c937d6c6aa7c98083612b3bb26bf /gcc | |
parent | 19c98942d885cae75f270e5cc2545a4a5daa1c4a (diff) | |
download | gcc-aeedc93fbae3f9aa761121167020569b65fb01d9.zip gcc-aeedc93fbae3f9aa761121167020569b65fb01d9.tar.gz gcc-aeedc93fbae3f9aa761121167020569b65fb01d9.tar.bz2 |
*** empty log message ***
From-SVN: r779
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/expmed.c | 18 | ||||
-rw-r--r-- | gcc/optabs.c | 16 |
2 files changed, 19 insertions, 15 deletions
diff --git a/gcc/expmed.c b/gcc/expmed.c index 78a0e5f..4b0f77d 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 52e13eb..7640c4f 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. */ |