[PATCH,RFC] CSE path following on basic blocks

Steven Bosscher stevenb.gcc@gmail.com
Sun Nov 26 12:28:00 GMT 2006

On 11/26/06, Steven Bosscher <stevenb.gcc@gmail.com> wrote:
> On 11/26/06, Eric Botcazou <ebotcazou@libertysurf.fr> 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
        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.
        (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.
        (pass_cse2): Likewise.

More information about the Gcc-patches mailing list