aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1992-04-18 19:40:49 +0000
committerRichard Stallman <rms@gnu.org>1992-04-18 19:40:49 +0000
commitaeedc93fbae3f9aa761121167020569b65fb01d9 (patch)
treef5013dec08b4c937d6c6aa7c98083612b3bb26bf /gcc
parent19c98942d885cae75f270e5cc2545a4a5daa1c4a (diff)
downloadgcc-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.c18
-rw-r--r--gcc/optabs.c16
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. */