Vladimir N. Makarov wrote:
Maxim Kuvyrkov wrote:
Hi.
I want to share some of my thoughts and doings on improving / cleaning
up current GCC instruction scheduler (Haifa) - most of them are just
small obvious improvements.
I have semi-ready patches for about a half of them and would appreciate
any early suggestion or comments on the following draft plan:
...
Any comments, suggestions or 'please don't do that' will be greatly
appreciated.
...
Good aliasing is very important for the scheduler. But I'd look at this
more wider. We need a good aliasing for many RTL optimizations. What's
happened to ISP RAS aliasing patch propagating SSA info to RTL? Why is
it stalled?
As for Sanjiv Gupta's aliasing work, that was interesting but as I
remember the patch made compiler too slow (like 40% slower). You should
make this approach faster to make it accepted as used by default.
I understand that good aliasing is important for several RTL passes and
I hope that the general aliasing support will improve in time. I must
admit that I didn't investigate the Gupta's patch yet, but I believe
that it is so slow because it needs to rescan the function many times in
order to get correct aliasing information. On the other hand alias
analysis for scheduler's data speculation has a luxury of being not
correct at times. So it looks like a low hanging fruit to me to try
fast but not safe variant of Gupta's work and see if the magic will happen.
Another important thing to do is to make the 1st scheduler register
pressure sensitive. It would improve performance and solve the 1st insn
scheduling problem for x86, x86_64. Now it is off by default because
the scheduler moves insns containing hard regs too freely and this
results in failure of the reload to find a hard register of a small class.
If you need benchmarking for machines (like ppc) you have no access to,
I can provide the benchmarking.
I should also mention that I do all these works in my spare time which
is not a lot, thus the above is my plan for about a half of the year.
I really appreciate. May be if you or ISP RAS could find students (e.g.
from Moscow University) to do this as Google Summer Code, it could help
you. I think it is not too late. You should ask Ian Taylor or Daniel
Berlin, if you want to do this.
The projects I've described are too small to qualify as a 3 months
works. But your suggestion to solve the 'scheduler -> ra' problem I
would estimate just like the right one.
The other GSC project might be to investigate and fix the places in
compiler where exported from tree-ssa aliasing information is being
invalidated.
So basically here are three Google Summer of Code projects:
o Scheduler -> RA
o Fix passes that invalidate tree-ssa alias export.
o { Fast but unsafe Gupta's aliasing patch, Unsafe tree-ssa alias
export } in scheduler's data speculation.
Ian, Daniel, what do you think?
Thanks,
Maxim