This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Speed up jump threading
- From: Geoff Keating <geoffk at geoffk dot org>
- To: Jan Hubicka <jh at suse dot cz>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: 22 Jan 2004 11:35:45 -0800
- Subject: Re: Speed up jump threading
- References: <20040122182821.GF25810@kam.mff.cuni.cz>
Jan Hubicka <jh@suse.cz> writes:
> Hi,
> part of cselib problems I am seeing is that it is used quite extensivly by jump
> threading. The patch reduces number of calls of cselib_init from 17000 to
> roughly 9757 on combine.c compilation with no effect on final code by
> keeping track of basic blocks that has been modified and avoiding
> re-doing the job on basic blocks that didn't.
>
> Bootstrapped/regtested i686-pc-gnu-linux. OK?
>
> Honza
>
> 2004-01-22 Jan Hubicka <jh@suse.cz>
> * cfgcleanup.c (first_pass): New static variable.
> (try_forward_edges): Add work limiting check for threading.
> (try_crossjump_bb): Add work limiting check for crossjumping.
> (try_optimize_cfg): Maintain first pass variable.
> *** 423,434 ****
> --- 425,438 ----
> bool changed = false;
> edge e, next, *threaded_edges = NULL;
>
> +
> for (e = b->succ; e; e = next)
> {
Random Whitespace Change.
> *************** try_crossjump_bb (int mode, basic_block
> *** 1573,1578 ****
> --- 1578,1590 ----
> If there is a match, we'll do it the other way around. */
> if (e == fallthru)
> continue;
> + /* If nothing changed since the last attempt, there is nothing
> + we can do. */
> + if (!first_pass
> + && (!(e->src->flags & BB_DIRTY)
> + && !(fallthru->src->flags & BB_DIRTY)))
> + continue;
> +
>
> if (try_crossjump_to_edge (mode, e, fallthru))
> {
Here, too.
Otherwise OK.
--
- Geoffrey Keating <geoffk@geoffk.org>