OSDN Git Service

* regrename.c (struct du_head): Make nregs signed.
authorbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 7 Sep 2011 15:57:45 +0000 (15:57 +0000)
committerbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 7 Sep 2011 15:57:45 +0000 (15:57 +0000)
commit31adcf5623e6b926531c3a2973eb1b0c22d3c4c8
tree311cb1866ca2c6ce990c341341238f8fc2166d1d
parentbe1735083588c7cf5da565771956811b9527fa96
* regrename.c (struct du_head): Make nregs signed.
(closed_chains): Remove.
(create_new_chain): Return the new chain.
(chain_from_id): New static function.
(dump_def_use_chain): Change argument to be an int, indicating
the first ID to print.  All callers changed.
(merge_overlapping_regs): Use chain_from_id.  Assert that
chains don't conflict with themselves.
(rename_chains): Take no argument.  Iterate over id_to_chain
rather to find chains to rename.  Clear tick before the main
loop.
(struct incoming_reg_info): New struct.
(struct bb_rename_info): New struct.
(init_rename_info, set_incoming_from_chain, merge_chains): New
static functions.
(regrename_analyze): New static function, broken out of
regrename_optimize.  Record and make use of open chain information
at basic block boundaries, and merge chains where possible.
(scan_rtx_reg): Make this_nregs signed.  Don't update
closed_chains.
(build_def_use): Return a bool to indicate success.  All callers
changed.  Don't initialize global data here.
(regrename_optimize): Move most code out of here into
regrename_analyze.
* regs.h (add_range_to_hard_reg_set, remove_range_from_hard_reg_set,
range_overlaps_hard_reg_set_p, range_in_hard_reg_set_p): New
static inline functions.
* vec.h (FOR_EACH_VEC_ELT_FROM): New macro.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@178645 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/regrename.c
gcc/regs.h
gcc/vec.h