http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50326
Andreas Schwab <sch...@linux-m68k.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |bernds at gcc dot gnu.org Component|tree-optimization |rtl-optimization --- Comment #1 from Andreas Schwab <sch...@linux-m68k.org> 2011-09-08 17:29:29 UTC --- 31adcf5623e6b926531c3a2973eb1b0c22d3c4c8 is the first bad commit commit 31adcf5623e6b926531c3a2973eb1b0c22d3c4c8 Author: bernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed Sep 7 15:57:45 2011 +0000 * 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