Patch: Support IA-64 speculation [3/5]
Maxim Kuvyrkov
mkuvyrkov@ispras.ru
Tue Dec 27 12:00:00 GMT 2005
Daniel Berlin wrote:
> Kenneth Zadeck posted code that finds all sorts of regions in the
> control flow graph, and nicely sets up BB style links for them (IE you
> can walk them like you walk BB's).
I didn't know about Kenneth's code. Will take a look at it in a week or two.
>
> It was based on algorithms in a compiler book that was never published.
>
> It used to depend on the basic block renumbering patch, but since that
> has been committed, the patch should be much much smaller (I emailed
> kenny asking him to see if he could redo it real quick).
>
> Look at
> http://gcc.gnu.org/ml/gcc-patches/2005-09/msg01888.html
>
> Mainly, the regions.c part.
>
> You'll note it is also *very* heavily commented.
>
> Also, if you think that is overkill, and you only want something that
> finds, for example, SESE regions, you can write something that will find
> SESE regions in linear time based on the algorithms in
> http://citeseer.ist.psu.edu/johnson93finding.html
> and
> http://citeseer.ist.psu.edu/johnson94program.html
>
> (This is only a couple hundred lines of code, I did it a year or so ago
> and sent it to Jan Hubicka because he wanted it for something).
>
> IMHO, my real problem not sure why we need to have two region finding
> algorithms (they really are different algorithms), instead of one, and
> why it should need to iterate on reducible CFG's.
>
> Ideally, we'd just use one of the "good" ones, like Kenny's, which
> should meet the needs of everyone involved. If you are not amenable to
> that (i'll state that it is an eventual goal to use that region code in
> the scheduler as the region finder), it should still be possible to
> generate the regions we want, using the SESE algorithm, or a modication
> of it, in linear time.
>
> --Dan
>
My goal in writing this code was to form regions from the "rest" of
basic blocks (straight flow code between cycles) and get an idea of
their impact on scheduling. As a result, I've understood that interblock
scheduling needs more accurate instruction priority computation to
provide satisfactory tuning-space. In fact, presently, control
speculation is a worst-case choice in haifa scheduler.
I'm now working on improving instruction priority computation. With it I
hope to make interblock speculation (and large regions) more profitable.
Maxim
More information about the Gcc-patches
mailing list