------- Comment #5 from wilson at gcc dot gnu dot org  2010-04-14 21:57 -------
I think the first part of the solution here is to make ira stop handling
zero-size classes as ones that have a potential register pressure problem.

The second part, is that I think we can make ar.lc a fixed register.  I think
the only reason why it is call-saved is because the ABI says it is call-saved,
but the ia64 prologue code has to handle the register specially anyways, so it
doesn't matter whether we mark it as call-saved or call-clobbered.  Also, all
references to it are generated as hard-registers, so it is OK for it to be
fixed.  There is the off change that someone is incorrectly using a 'e'
constraint to put values in the register.  We should check for that in a few
obvious places like the linux kernel and glibc.  If this is true, then we will
have to split the 'e' class in two, and ar.lc will have to remain in 'e' and
the other two regs will have to move.

I did a little checking to see if making ar.lc fixed would work, and I noticed
that the handling of doloops is wrong.  The default handling is to reject loops
with calls, but since ia64 ar.lc is call-saved, we should allow them.


-- 


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

Reply via email to