This is the mail archive of the
mailing list for the GCC project.
Re: [tree-ssa] COMPOUND_EXPR removal
- From: Jan Hubicka <hubicka at ucw dot cz>
- To: Richard Henderson <rth at redhat dot com>,Zdenek Dvorak <rakdver at atrey dot karlin dot mff dot cuni dot cz>,gcc-patches at gcc dot gnu dot org, dnovillo at redhat dot com, jh at suse dot cz
- Date: Thu, 6 Nov 2003 09:59:18 +0100
- Subject: Re: [tree-ssa] COMPOUND_EXPR removal
- References: <20031105160803.GA13642@atrey.karlin.mff.cuni.cz> <20031105182741.GB28707@redhat.com>
> On Wed, Nov 05, 2003 at 05:08:03PM +0100, Zdenek Dvorak wrote:
> > this patch replaces the COMPOUND_EXPRs by the double linked list of
> > containers, thus finally making the manipulation with cfg reasonably
> > simple.
> Unfortunately, it doesn't start early enough.
> In order to fix tree-eh speed problems, the double-linked-list has to
> exist before lower_eh_constructs; i.e. at minimum it needs to be created
> during gimplification. Doing it there also avoids the need for
> rationalize_compound_expr during gimplification as well, which is nice.
> But in order to have the double-linked-list exist before all the other
> containers (COND_EXPR, TRY_FINALLY_EXPR, etc) have been removed, we have
> to have a way to embed this list into existing tree nodes. Which means
> that we need a new tree container.
It would be nice to do this incrementally starting from what we do have
Adding more sanity check to verify_flow_info you notice that the CFG and
SSA graph is plain broken after most of not completelly trivial edge
splits. This has potential to cause people spend ages debugging their
code (it bit me in pretty obvious way not being able to verify CFG after
expansion, but it manifest in many other weird ways in current tree
too). Zdenek got edge splitting right that is itself a big win.
Accepting Zdenek's patch would help me to push out the chain of changes
I have (verify_flow_info checking SSA graph consistency, fixes to few
other places breaking it, patches to get folding of some expressions we
fold only at expansion time, reordering of code expanding nested
functions so we can do so after the body is expanded and hopefully
the CFG transitive expansion still being worked on)