On 10/29/13 10:46, Vladimir Makarov wrote:
On 10/29/2013 12:26 PM, Jeff Law wrote:
On 10/29/13 09:12, Vladimir Makarov wrote:
I've found only one useful transformations in regmove pass:
dst = src dst = src (src dies)
... no dst or src modification => src changed on dst
src dies ...
It is some kind value numbering technique decreasing register
pressure by removing one live-range. It is not frequently
triggered transformation (about 30 in all combine.c) and its
effect is quite small but there is no harm in it at all too.
So I added the code to IRA without changes practically (it would
be nice to make this in more general way, e.g. not only in BB
scope -- but I am not sure that it will makes visible
improvements and I have no time to try this currently).
I wouldn't be concerned about generalizing this too much. I can't see
how it's *that* important, and we can always come back to it if we
decide it is important.
I am completely agree with you. I don't expect any important outcome
from this work. In fact, I did some experiments with GVN about 10 years
ago (how time flies) for old RA and did not see any visible effect on
performance but generated code always changes and may be there are more
opportunity for this (although more probably less opportunities). In
any case, it is lowest priority project for me and most probably I will
never start it.
I vaguely recall you talking about GVN in the allocator once -- perhaps
at one of the summits. And yes, I recall you saying it wasn't
particularly helpful.
Jeff