This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]