This is the mail archive of the
mailing list for the GCC project.
Re: [PATCH,RFC] CSE path following on basic blocks
On 11/26/06, Steven Bosscher <firstname.lastname@example.org> wrote:
On 11/26/06, Eric Botcazou <email@example.com> wrote:
> > I will when I ask for a review. This was just RFC. As you can see in
> > the subject btw.
> IMHO this distinction is irrelevant, patches should always come with ChangeLog
> entries to help readers get the big picture.
Fine, fine. I'll add a ChangeLog entry next time.
* cse.c: Include cfglayout.h.
(struct cse_basic_block_data): Remove LAST field.
(struct branch_path): Remove BRANCH and TAKEN fields. Add new
(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.
(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): Initialize cfglayout mode. 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.