This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Question re: SSA Aggressive Dead Code Elimination
- To: Jeffrey A Law <law at redhat dot com>, Daniel Berlin <dan at cgsoftware dot com>
- Subject: Re: Question re: SSA Aggressive Dead Code Elimination
- From: Michael Matz <matzmich at cs dot tu-berlin dot de>
- Date: Wed, 27 Jun 2001 15:50:16 +0200 (MET DST)
- cc: <gcc at gcc dot gnu dot org>
Hi,
On Wed, 27 Jun 2001, Daniel Berlin wrote:
>
> If so, then even if you've not changed the DF, you've certainly
> changed the gating path. And changing the gating path means updating
> the edge gating functions approriately, which you've not done.
Hmm, if I'm not mistaken, you try to solve a different problem than Jeff
is facing. You want to make the SSA (or gated SSA) valid, or at least
match to the then existing CFG (that with only one edge to BB 2). But the
initial removing of that edge was wrong. Indeed if a PHI node is
important, then also all edges into those phi nodes are important (the
semantic is to select between different thing, and removing edges means to
remove possibilities to select from, which in this case, because it isn't
provable, that all of these cases are the same). I think, this is the
cleanest approach instead of adding helper insns to not create empty BB's
and having the possibility to mark them important.
In fact in the presence of SSA it is not correct to remove edges just
because the target block doesn't contain any important insns, exactly
because CFG information is coded into the insn stream (the phi nodes), so
the non-importance of insns is not at all obvious.
Ciao,
Michael.