r132716 - in /branches/sel-sched-branch/gcc: Ch...
abel@gcc.gnu.org
abel@gcc.gnu.org
Wed Feb 27 14:54:00 GMT 2008
Author: abel
Date: Wed Feb 27 14:54:00 2008
New Revision: 132716
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=132716
Log:
Avoid computing register liveness below original insns.
* haifa-sched.c (sched_create_recovery_edges): Tidy.
* sel-sched-ir.c (init_lv_set, free_lv_sets,
init_invalid_data_sets): Support creating liveness sets for empty blocks.
(delete_and_free_basic_block): New function, factored from ...
(sel_add_or_remove_bb): ... here. Use it.
(sel_create_recovery_block): Do not create unneeded empty basic block.
(sel_remove_loop_preheader): Use delete_and_free_basic_block instead of
plain delete_basic_block.
* sel-sched-ir.h (get_all_loop_exits, _eligible_successor_edge_p): Assert
that empty blocks are not met inside current scheduling region.
* sel-sched.c (propagate_lv_set): Use df_simulate_one_insn_backwards.
(compute_live_after_bb): Recurse through empty blocks.
(compute_live_below_insn): Kill.
(find_used_regs_1): New parameter live_way. Also check INSN_REG_CLOBBERS
along a code motion path. Do not call compute_live_below_insn, instead
find registers whose live ranges we crossed from the saved liveness sets
on our way ...
(find_used_regs): ... and from registers set in the already scheduled
insns of the current group.
(sel_sched_region_1): Make gcc_assert allow valid liveness sets on
empty blocks.
Modified:
branches/sel-sched-branch/gcc/ChangeLog.sel-sched
branches/sel-sched-branch/gcc/haifa-sched.c
branches/sel-sched-branch/gcc/sel-sched-ir.c
branches/sel-sched-branch/gcc/sel-sched-ir.h
branches/sel-sched-branch/gcc/sel-sched.c
More information about the Gcc-cvs
mailing list