Thoughts about semantics of BB_VISITED
Zdenek Dvorak
rakdver@atrey.karlin.mff.cuni.cz
Fri Jan 7 20:00:00 GMT 2005
Hello,
> >>>>>If the state of the mark would be undefined, you would need either to
> >>>>>clean them up first (over whole cfg), or use bitmaps for the marks.
> >>>>>Both of these approaches bring a risk of quadratic behavior.
> >>>>>
> >>>>
> >>>>Quadratic behaviour? How?
> >>>
> >>>
> >>>because the places where it is used now (most notably, get_loop_body)
> >>>do not look at whole cfg, but just at the loop body.
> >>>
> >>Oh, I see. So, this is inside a helper, not a pass. How unfortunate.
> >>Perhaps get_loop_body should not use BB_VISITED. What if the pass
> >>calling get_loop_body is using BB_VISITED for its own processing?
> >
> >then it is doomed :-(. Quite often there is no real reason why a pass
> >should use BB_VISITED -- it can simply use sbitmap of basic blocks instead.
>
> Why can't one just pass an sbitmap to get_loop_body, instead of it
> destroying visited flags without telling you?
because get_loop_body is often used on places where (lots of) new blocks
get created (like unroller). Resizing the sbitmap would be quite
annoying.
Zdenek
More information about the Gcc
mailing list