[fpc-devel] register allocator seems to be using S20 for two things at the same time (related to armhf porting work)
Daniël Mantione
daniel.mantione at freepascal.org
Mon Mar 19 07:48:19 CET 2012
Op Sun, 18 Mar 2012, schreef peter green:
> My suspiscion was that the compiler was trying to spill but not actually
> generating any code to implement the spill.
> I added a debug writeln to setbitmap and it does seem to be being called with
> both 50,70 and 70,50. Full output is at http://pastebin.com/3jd8zNkh
Okay, it is quite unlikely that the register allocator itself ignores such
an interference, so you may be rigth it tries to spill but nothing
happens.
You can check this by adding a breakpoint in Trgobj.spill_registers and
and check the contents of spillednodes, or the value of t in the loop that
iterates through it.
If the register is being spilled, Trgobj.spill_register will call
Trgobj.instr_spill_register to modify an instruction using the
register. This procedure will in turn call the CPU specific procedures
Trgcpu.do_spill_read and Trgcpu.do_spill_written to modify the code.
Do_spill_read and do_spill_written are the routines to check if they
contain the right support for mregisters (I don't see any specific code
there at the moment).
Daniël
More information about the fpc-devel
mailing list