diff options
author | Bernd Schmidt <bernds@codesourcery.com> | 2011-09-07 15:57:45 +0000 |
---|---|---|
committer | Bernd Schmidt <bernds@gcc.gnu.org> | 2011-09-07 15:57:45 +0000 |
commit | 8ffa0351a51d66881c60b4f04da586553d1797cd (patch) | |
tree | 311cb1866ca2c6ce990c341341238f8fc2166d1d /gcc/vec.h | |
parent | a81462f103bd6707e6ac02695bdc515097721156 (diff) | |
download | gcc-8ffa0351a51d66881c60b4f04da586553d1797cd.zip gcc-8ffa0351a51d66881c60b4f04da586553d1797cd.tar.gz gcc-8ffa0351a51d66881c60b4f04da586553d1797cd.tar.bz2 |
regrename.c (struct du_head): Make nregs signed.
* 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.
From-SVN: r178645
Diffstat (limited to 'gcc/vec.h')
-rw-r--r-- | gcc/vec.h | 5 |
1 files changed, 5 insertions, 0 deletions
@@ -195,6 +195,11 @@ along with GCC; see the file COPYING3. If not see #define FOR_EACH_VEC_ELT(T, V, I, P) \ for (I = 0; VEC_iterate (T, (V), (I), (P)); ++(I)) +/* Likewise, but start from FROM rather than 0. */ + +#define FOR_EACH_VEC_ELT_FROM(T, V, I, P, FROM) \ + for (I = (FROM); VEC_iterate (T, (V), (I), (P)); ++(I)) + /* Convenience macro for reverse iteration. */ #define FOR_EACH_VEC_ELT_REVERSE(T,V,I,P) \ |