mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-21 15:50:50 +08:00
regrename.c (find_best_rename_reg): Rename to ...
2014-12-05 Thomas Preud'homme <thomas.preudhomme@arm.com> gcc/ * regrename.c (find_best_rename_reg): Rename to ... (find_rename_reg): This. Also add a parameter to skip tick check. * regrename.h: Likewise. * config/c6x/c6x.c (try_rename_operands): Adapt to above renaming. From-SVN: r218434
This commit is contained in:
parent
fda3e2851e
commit
63edbb04b2
@ -1,3 +1,10 @@
|
||||
2014-12-05 Thomas Preud'homme <thomas.preudhomme@arm.com>
|
||||
|
||||
* regrename.c (find_best_rename_reg): Rename to ...
|
||||
(find_rename_reg): This. Also add a parameter to skip tick check.
|
||||
* regrename.h: Likewise.
|
||||
* config/c6x/c6x.c (try_rename_operands): Adapt to above renaming.
|
||||
|
||||
2014-12-05 Martin Jambor <mjambor@suse.cz>
|
||||
|
||||
PR ipa/64192
|
||||
|
@ -3513,7 +3513,8 @@ try_rename_operands (rtx_insn *head, rtx_insn *tail, unit_req_table reqs,
|
||||
COMPL_HARD_REG_SET (unavailable, reg_class_contents[(int) super_class]);
|
||||
|
||||
old_reg = this_head->regno;
|
||||
best_reg = find_best_rename_reg (this_head, super_class, &unavailable, old_reg);
|
||||
best_reg =
|
||||
find_rename_reg (this_head, super_class, &unavailable, old_reg, true);
|
||||
|
||||
regrename_do_replace (this_head, best_reg);
|
||||
|
||||
|
@ -357,11 +357,13 @@ check_new_reg_p (int reg ATTRIBUTE_UNUSED, int new_reg,
|
||||
/* For the chain THIS_HEAD, compute and return the best register to
|
||||
rename to. SUPER_CLASS is the superunion of register classes in
|
||||
the chain. UNAVAILABLE is a set of registers that cannot be used.
|
||||
OLD_REG is the register currently used for the chain. */
|
||||
OLD_REG is the register currently used for the chain. BEST_RENAME
|
||||
controls whether the register chosen must be better than the
|
||||
current one or just respect the given constraint. */
|
||||
|
||||
int
|
||||
find_best_rename_reg (du_head_p this_head, enum reg_class super_class,
|
||||
HARD_REG_SET *unavailable, int old_reg)
|
||||
find_rename_reg (du_head_p this_head, enum reg_class super_class,
|
||||
HARD_REG_SET *unavailable, int old_reg, bool best_rename)
|
||||
{
|
||||
bool has_preferred_class;
|
||||
enum reg_class preferred_class;
|
||||
@ -400,15 +402,19 @@ find_best_rename_reg (du_head_p this_head, enum reg_class super_class,
|
||||
new_reg))
|
||||
continue;
|
||||
|
||||
if (!check_new_reg_p (old_reg, new_reg, this_head, *unavailable))
|
||||
continue;
|
||||
|
||||
if (!best_rename)
|
||||
return new_reg;
|
||||
|
||||
/* In the first pass, we force the renaming of registers that
|
||||
don't belong to PREFERRED_CLASS to registers that do, even
|
||||
though the latters were used not very long ago. */
|
||||
if (check_new_reg_p (old_reg, new_reg, this_head,
|
||||
*unavailable)
|
||||
&& ((pass == 0
|
||||
&& !TEST_HARD_REG_BIT (reg_class_contents[preferred_class],
|
||||
best_new_reg))
|
||||
|| tick[best_new_reg] > tick[new_reg]))
|
||||
if ((pass == 0
|
||||
&& !TEST_HARD_REG_BIT (reg_class_contents[preferred_class],
|
||||
best_new_reg))
|
||||
|| tick[best_new_reg] > tick[new_reg])
|
||||
best_new_reg = new_reg;
|
||||
}
|
||||
if (pass == 0 && best_new_reg != old_reg)
|
||||
@ -480,8 +486,8 @@ rename_chains (void)
|
||||
if (n_uses < 2)
|
||||
continue;
|
||||
|
||||
best_new_reg = find_best_rename_reg (this_head, super_class,
|
||||
&this_unavailable, reg);
|
||||
best_new_reg = find_rename_reg (this_head, super_class,
|
||||
&this_unavailable, reg, true);
|
||||
|
||||
if (dump_file)
|
||||
{
|
||||
|
@ -89,8 +89,8 @@ extern void regrename_init (bool);
|
||||
extern void regrename_finish (void);
|
||||
extern void regrename_analyze (bitmap);
|
||||
extern du_head_p regrename_chain_from_id (unsigned int);
|
||||
extern int find_best_rename_reg (du_head_p, enum reg_class, HARD_REG_SET *,
|
||||
int);
|
||||
extern int find_rename_reg (du_head_p, enum reg_class, HARD_REG_SET *, int,
|
||||
bool);
|
||||
extern void regrename_do_replace (du_head_p, int);
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user