mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-24 00:59:07 +02:00
* bugfix of problems with profile code which clobbers some registers
This commit is contained in:
parent
7117075514
commit
6e46f3424c
@ -1234,6 +1234,20 @@ function returns in a register and the caller receives it in an other one}
|
||||
code, since temp. allocation might occur before - carl
|
||||
}
|
||||
|
||||
|
||||
{ for the save all registers we can simply use a pusha,popa which
|
||||
push edi,esi,ebp,esp(ignored),ebx,edx,ecx,eax }
|
||||
if (po_saveregisters in aktprocdef.procoptions) then
|
||||
cg.g_save_all_registers(list)
|
||||
else
|
||||
{ should we save edi,esi,ebx like C ? }
|
||||
if (po_savestdregs in aktprocdef.procoptions) then
|
||||
cg.g_save_standard_registers(list,aktprocdef.usedregisters);
|
||||
|
||||
{ the actual profile code can clobber some registers,
|
||||
therefore if the context must be saved, do it before
|
||||
the actual call to the profile code
|
||||
}
|
||||
if (cs_profile in aktmoduleswitches)
|
||||
and not(po_assembler in aktprocdef.procoptions)
|
||||
and not(inlined) then
|
||||
@ -1247,14 +1261,6 @@ function returns in a register and the caller receives it in an other one}
|
||||
cg.g_profilecode(list);
|
||||
end;
|
||||
|
||||
{ for the save all registers we can simply use a pusha,popa which
|
||||
push edi,esi,ebp,esp(ignored),ebx,edx,ecx,eax }
|
||||
if (po_saveregisters in aktprocdef.procoptions) then
|
||||
cg.g_save_all_registers(list)
|
||||
else
|
||||
{ should we save edi,esi,ebx like C ? }
|
||||
if (po_savestdregs in aktprocdef.procoptions) then
|
||||
cg.g_save_standard_registers(list,aktprocdef.usedregisters);
|
||||
|
||||
{ a constructor needs a help procedure }
|
||||
if (aktprocdef.proctypeoption=potype_constructor) then
|
||||
@ -1896,7 +1902,10 @@ function returns in a register and the caller receives it in an other one}
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.68 2002-12-01 22:06:59 carl
|
||||
Revision 1.69 2002-12-03 22:13:39 carl
|
||||
* bugfix of problems with profile code which clobbers some registers
|
||||
|
||||
Revision 1.68 2002/12/01 22:06:59 carl
|
||||
* warning of portabilitiy problems with parasize / localsize
|
||||
|
||||
Revision 1.67 2002/11/30 18:44:57 carl
|
||||
|
Loading…
Reference in New Issue
Block a user