http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46829

--- Comment #10 from Vladimir Makarov <vmakarov at redhat dot com> 2010-12-10 
15:45:33 UTC ---
(In reply to comment #9)
> (In reply to comment #5)
> > It should work for x86_64, not necessarily i?86.
> 
> Do you mean -fsched-pressure should be able to solve the problem completely
> for x86-64?
> 
> Vladimir: Do you have any idea which direction to go in order to solve this
> problem?

Introducing of -fsched-pressure just decreased probability of the bug when 1st
insn scheduling is used.  The patch introducing -fsched-pressure contained some
code in reload to decrease the probability even more.

Unfortunately, it did not eliminated it fully.  This bug can not be fixed in
scheduler (or the solution, like not moving through insn referring for a hard
register, will be too conservative especially for x86_64 and still will not fix
it for x86) because the scheduler can not see all info handled by reload.

IMHO, the right fix should be possibility to split live ranges for explicitly
mentioned hard register.  May be Jeff Law's current work will provide such
feature.

In any case, implementation of live range splitting in reload is too big and
complicated job even for stage #1.  There is no way to implement it at stage
#3.  It is also very unreasonable thing to do because any change in reload is
usually very bug prone.

I am sorry, but I don't see that it can be fixed for gcc4.6 fox x86/x86-64. 
Although it might be fixed for gcc4.7.

Reply via email to