diff options
author | sayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-10-11 03:49:54 +0000 |
---|---|---|
committer | sayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-10-11 03:49:54 +0000 |
commit | 634d45d7c46dd17b34676d0ce4a450670c18cca8 (patch) | |
tree | 21edeff789f11f21f721ad4c372bd423b1038dca /gcc/cse.c | |
parent | 75a3b60ca599d9b33b45ba9378fd5458f1708eb3 (diff) | |
download | gcc-634d45d7c46dd17b34676d0ce4a450670c18cca8.tar.gz |
* cse.c (constant_pool_entries_regcost): New global variable to
hold the register cost component of constant_pool_entries_cost.
(fold_rtx): Calculate constant_pool_entries_regcost at the same
time as constant_pool_entries_cost.
(cse_insn): Set both src_folded_cost and src_folded_regcost from
constant_pool_entries_cost and constant_pool_entries_regcost.
(cse_main): Initialize constant_pool_entries_regcost to zero.
* optabs.c (expand_unop): Attach a REG_EQUAL note describing
the semantics of the sequence of bit operations used to negate
a floating-point value.
(expand_abs_nojump): Likewise attach a REG_EQUAL note describing
the semantics of the bit operations used to abs a floating point
value.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@72326 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cse.c')
-rw-r--r-- | gcc/cse.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/cse.c b/gcc/cse.c index 8683f4ac338..7cdc72f6506 100644 --- a/gcc/cse.c +++ b/gcc/cse.c @@ -569,6 +569,7 @@ static struct table_elt *last_jump_equiv_class; the insn. */ static int constant_pool_entries_cost; +static int constant_pool_entries_regcost; /* This data describes a block that will be processed by cse_basic_block. */ @@ -3529,7 +3530,10 @@ fold_rtx (rtx x, rtx insn) rtx new; if (CONSTANT_P (constant) && GET_CODE (constant) != CONST_INT) - constant_pool_entries_cost = COST (constant); + { + constant_pool_entries_cost = COST (constant); + constant_pool_entries_regcost = approx_reg_cost (constant); + } /* If we are loading the full constant, we have an equivalence. */ if (offset == 0 && mode == const_mode) @@ -5507,6 +5511,7 @@ cse_insn (rtx insn, rtx libcall_insn) src_folded_force_flag = 1; src_folded = trial; src_folded_cost = constant_pool_entries_cost; + src_folded_regcost = constant_pool_entries_regcost; } } @@ -6939,6 +6944,7 @@ cse_main (rtx f, int nregs, int after_loop, FILE *file) cse_jumps_altered = 0; recorded_label_ref = 0; constant_pool_entries_cost = 0; + constant_pool_entries_regcost = 0; val.path_size = 0; init_recog (); |