On 09/09/14 10:43, Vladimir Makarov wrote:

I've investigated the wrong code generation.  I did a mistake in my last
patch excluding pic pseudo from live-range analysis when risky
transformations are on.

Here is the right version of all IRA/LRA changes relative to trunk.  I
managed to compile and run successfully all 32-bit PIC SPECInt2000
programs with these changes.
Thanks Vlad.  I'll leave final testing and committing these patches to you.

I did play around with a simpler patch to un-fix the PIC register for 32bit x86 -- without turning it into a pseudo. The problem with that intermediate step is that when we spill values with symbolic equivalences, we fail to handle the new conflicts that will generate. ie, in the case of PIC reloading those values should cause the unfixed hard pic register to conflict with any live pseudos at the reload point. But it doesn't :( As a result we end up using the unfixed hard pic reg to satsify a reload and, well, you know what happens then.

jeff

Reply via email to