[fpc-devel] register allocator seems to be using S20 for two things at the same time (related to armhf porting work)
peter green
plugwash at p10link.net
Sun Mar 18 13:41:56 CET 2012
Daniƫl Mantione wrote:
> Please use the command line option -sr to check the generated code
> before register allocation.
Done and attatched.
> You can likely find the cause in there.
The code with imaginary registers looks correct to me. It seems to load
each parameter into a seperate even numbered imaginary register (using
odd numbered imaginary registers as temporaries in the process)
allocating them as it goes. Then copies them to the locations needed for
the function call deallocating them as it goes.
So it seems to me that the problem is in the translation of the form
using imaginary registers to the form using real registers. Can you
explain (or point me to documentation on) how this form is translated
into a form using real registers. In particular what exactly happens
when there are not enough real registers free to assign a real register
for every imaginary register that is in use at a given time?
My current suspiscion is that something is missing regarding handling of
running out of VFP registers and it hasn't been noticed before because
noone has tried to do what i'm doing (implementing a calling convention
using VFP registers and then stress testing it) but i've no idea where
to look in the sourcecode to confirm/refute that idea.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: testfp.s
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20120318/dcacf3b8/attachment.ksh>
More information about the fpc-devel
mailing list