On Tue, Mar 23, 2021 at 8:55 AM bin.cheng <bin.ch...@linux.alibaba.com> wrote:
>
> > > In the patch, I just duplicated and created new function 
> > > loop_first_rev_post_order_compute_fn.
> > > I am not sure if I should change the original function 
> > > pre_and_rev_post_order_compute_fn
> > > (maybe not at this stage)? I am neither sure about the name, though 
> > > haven't got a better one.
> > > Any comment is appreciated?
> >
> > So your new function seems to do what rev_post_order_and_mark_dfs_back_seme 
> > does
> > when you specify for_iteration = true.  Specifically that function then does
> >
> >    If FOR_ITERATION is true then compute an RPO where SCCs form a
> >    contiguous region in the RPO array.
>
> Right, this is exactly what I need.  Attachment is the updated patch.  
> Bootstrap and test on x86_64.

OK - Thank you.

> >
> > it in particular should handle the situation well where there are multiple 
> > exits
> > from a loop to different outer loops (consider a switch stmt exiting to
> > the immediate outer or to the next outer loop) - something your patch
> > likely still handles "randomly" (though we of course generally do not handle
> > such exits well).
> >
> > The idea of the rev_post_order_and_mark_dfs_back_seme algorithm is to
> > treat SCCs as single nodes for the "outermost" RPO walk and then
> > continuously expand SCCs from outer to inner.
> >
> > So for the testcase I'm quite sure using the this function for computing
> > the RPO would work but extra thoughts are appreciated.
> Maybe another more straightforward or easier to understand function name?

Heh ;)  I suppose we could wrap it with an easier to grok name for the
callers not wanting to apply it on a region.

Richard.

> Thanks,
> bin
> >
> > Thanks,
> > Richard.
> >

Reply via email to