OSDN Git Service

* cse.c: (struct cse_basic_block_data): Remove LAST field.
authorsteven <steven@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 10 Dec 2006 10:59:19 +0000 (10:59 +0000)
committersteven <steven@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 10 Dec 2006 10:59:19 +0000 (10:59 +0000)
commitbe22716f6037c55c2992a7757222bf56216f4877
tree12674a0e4957c90392cd1cdebd9abf48f1a23fe2
parent0fe7e65892ff0d74245a1954e3362cea45367d2b
* cse.c: (struct cse_basic_block_data): Remove LAST field.
(struct branch_path): Remove BRANCH and TAKEN fields. Add new
BB field.
(cse_visited_basic_blocks): New static bitmap.
(cse_end_of_basic_block, cse_basic_block): Remove.
(cse_find_path, cse_dump_path, cse_prescan_path,
cse_extended_basic_block): New static functions.
(cse_insn): Don't CSE over setjmp calls.  Use the CFG to find
basic block boundaries.  Don't record jump equivalences here.
Update the CFG after doing in-place replacement of the SET_SRC.
(cse_main): Rewrite.  Look for extended basic block headers
and call cse_extended_basic_block on them until all paths that
start at this header are exhausted.
(rest_of_handle_cse): Verify that the CFG is incrementally updated
and correct after cse_main.
Don't call delete_trivially_dead_insns, let cfgcleanup do that.
(rest_of_handle_cse2): Verify the CFG here, too, after cse_main.
(pass_cse): Add TODO_verify_flow.
(pass_cse2): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@119706 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/cse.c