http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59535
Ramana Radhakrishnan <ramana at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2013-12-19 CC| |ramana at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #11 from Ramana Radhakrishnan <ramana at gcc dot gnu.org> --- (In reply to Vladimir Makarov from comment #9) > (In reply to Richard Earnshaw from comment #5) > I think major problem is in wrong alternative choices as thumb lo/hi reg > usage is complicated. That is probably going to be the reason. > > I take this bug very seriously. If I cannot fix it till end of Jan (sorry, > it is a vacation time), probably we should switch to reload pass for thumb. Thanks very much for taking this so seriously. > > To be honest, I don't know why 12 is not fixed. It results in using > 12 by IRA and bigger code when even reload is used. I believe it > should fixed too. According to the ABI r12 is a caller saved register. Am I correct in understanding that we are taking out a caller-saved register to allow for lra to be able to choose other low regs and thereby prevent movements to and from r12 ? Taking out r12 will have performance implications, so any change here needs to be benchmarked very carefully on all cores with Thumb1 and Thumb2 to make sure that the impact. Additionally we shouldn't be needing to do this in ARM state, so this patchlet as it stands is not enough. regards Ramana