This is the mail archive of the
mailing list for the GCC project.
Re: [tree-ssa] More overlapping live range infrastructure.
On Thu, 2003-05-08 at 12:07, Diego Novillo wrote:
> On Wed, May 07, 2003 at 03:21:02PM -0400, Andrew MacLeod wrote:
> OK. Except the change to tree-ssa-dce.c:process_worklist. I
> think it's unnecessarily pessimistic. When we talked about this
> before, I suggested the following:
> Given a live PHI node, look for all predecessor blocks for its
> arguments. If a predecessor block B has exactly one statement in
> it, mark it live.
That seems wrong. What if that stmt is indeed dead? I dont want to keep
it live for no reason... There could be an arbitrary number of blocks
and constructs between the PHI and the originating COND_EXPR.
> Marking the predecessor statement live will in turn mark its
> control dependent parent live which guarantees that the flowgraph
> won't collapse for that PHI node
> Do you think that could work? The change you made will make
> blocks with more than one statement unnecessary live.
Huh? It only affect the conditional stmt itself. How will it make blocks
with more than one stmt unecessarily live?
My change says:
If this PHI is necessary, and the incoming edges are from blocks whose
parent is a COND_EXPR, mark that COND_EXPR live. If the else and then
blocks each have 7 stmts, and those stmts are dead, they will still all
be marked dead... I dont touch them. The only additional thing this
patch does which it didn't do before is make the COND_EXPR stmt live
Any stmts which feed the COND_EXPR will be kept, but they have to be
I don't understand why you are talking about blocks with only one
> In find_insert_location, could you add a comment indicating
> what the argument AFTER is used for?
Sure. I added it at the last minute.