This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: [tree-ssa] RFC: Making control flow more explicit
Hello,
I have spent a few hours thinking about the issue and I now think there
might be a way to split the patch into smaller ones (perhaps also not
seeing the code for a day helped :-). The proposed splitting (numbers
in brackets mean my estimate on size of the change):
1) elimination of LOOP_EXPRs [500] -- a few lines in gimplification, removal
of references to them in tree-*, plus loop note regeneration just
before loop header copying
2) lowering of SWITCH_EXPRs and COND_EXPRs (so that their branches are
just gotos) [500-1000] -- a change to gimplification, cleanup + a few changes in
optimizers
3) replacing COMPOUND_EXPRs with double-linked chain of statements [500-1000] --
mostly changes to block iterators + places in code that rely on the
fact that the whole function tree is kept, and final pass that
regenerates COMPOUND_EXPRs
4) moving BIND_EXPRs and exception handling constructs to their own tree [2000]
probably the most complicated step; some changes to iterators, many
to cleanup, final pass to move structures back. This is basically
equivalent to the core of my current patch, I will try to think more
on how to make this step less painful.
5) rewrite of make_edges [1000] -- especially eh edges are created in a
weird way currently, IMHO.
6) final tweaks & cleanups -- not really sure what will be needed.
In reality I will of course not completely follow this list (especially
because some of the points partially overlap), but this should be the
rough idea.
Is this acceptable? It will of course be a great lot of patches, so I
won't go into it unless I know that someone is ready to take the burden
of reviewing them.
Zdenek