This is the mail archive of the
mailing list for the GCC project.
Re: [tree-ssa] More CFG improvements [patch]
- From: law at redhat dot com
- To: Diego Novillo <dnovillo at redhat dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Tue, 04 Feb 2003 10:21:57 -0700
- Subject: Re: [tree-ssa] More CFG improvements [patch]
- Reply-to: law at redhat dot com
In message <20030204125748.GA10442@tornado.toronto.redhat.com>, Diego Novillo w
>Reduces the number of basic blocks in the CFG by making
>COND_EXPRs and SWITCH_EXPRs not create a new block. Rather, it
>makes them the last statement in the block.
>Before, we would create three basic blocks for this fragment:
> s1; <- BB0
> if (...) <- BB1
> s2; <- BB2
>Now we only create two:
> if (...) <- BB0
> s2; <- BB1
>This change reduces compile times for some files like c-parse.c
>by about 50%. It should also help the semi-pruning heuristic
>that we have now for inserting PHI nodes. Bigger blocks should
>provide more opportunities for finding locally dead variables.
>The change is fairly simple:
>- COND_EXPR and SWITCH_EXPR mark the termination of a block.
>- Control statements are not taken from the top of a block. They
> all appear at the bottom.
>Bootstrapped and tested on x86.
I thought this was going to allow us to enable 20001226-1.c, except that
for some reason we're getting some spurious vuses on some statements,
which in turn is causing certain variables to be nonlocal when they should
local. That in turn causes us to insert far too many PHI nodes and
20001226-1.c blows up.
Anyway, it's still significant progress.. Thanks!