mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-16 17:59:25 +02:00
* fixed for the fix of bug #793
* fpu variables modified by nested subroutines aren't regable anymore * $maxfpuregisters doesn't modify anymore the behavior of a procedure before
This commit is contained in:
parent
b38526bfea
commit
eb1715ded4
@ -720,7 +720,7 @@ implementation
|
||||
begin
|
||||
{ it's no bad idea, to insert the VMT }
|
||||
emit_sym(A_PUSH,S_L,newasmsymbol(
|
||||
pobjectdef(p^.methodpointer^.resulttype)^.vmt_mangledname));
|
||||
procinfo^._class^.vmt_mangledname));
|
||||
end
|
||||
{ destructors haven't to dispose the instance, if this is }
|
||||
{ a direct call }
|
||||
@ -1333,7 +1333,12 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.119 2000-01-21 12:17:41 jonas
|
||||
Revision 1.120 2000-01-21 22:06:16 florian
|
||||
* fixed for the fix of bug 793
|
||||
* fpu variables modified by nested subroutines aren't regable anymore
|
||||
* $maxfpuregisters doesn't modify anymore the behavior of a procedure before
|
||||
|
||||
Revision 1.119 2000/01/21 12:17:41 jonas
|
||||
* regallocation fixes
|
||||
|
||||
Revision 1.118 2000/01/20 12:14:47 florian
|
||||
|
@ -1366,6 +1366,7 @@ var
|
||||
_class,hp:Pobjectdef;
|
||||
{ switches can change inside the procedure }
|
||||
entryswitches, exitswitches : tlocalswitches;
|
||||
oldaktmaxfpuregisters,localmaxfpuregisters : longint;
|
||||
{ code for the subroutine as tree }
|
||||
{$ifdef newcg}
|
||||
code:pnode;
|
||||
@ -1456,6 +1457,7 @@ begin
|
||||
{ save entry info }
|
||||
entrypos:=aktfilepos;
|
||||
entryswitches:=aktlocalswitches;
|
||||
localmaxfpuregisters:=aktmaxfpuregisters;
|
||||
{$ifdef newcg}
|
||||
{ parse the code ... }
|
||||
if (po_assembler in aktprocsym^.definition^.procoptions) then
|
||||
@ -1498,6 +1500,8 @@ begin
|
||||
{ ... and generate assembler }
|
||||
{ but set the right switches for entry !! }
|
||||
aktlocalswitches:=entryswitches;
|
||||
oldaktmaxfpuregisters:=aktmaxfpuregisters;
|
||||
aktmaxfpuregisters:=localmaxfpuregisters;
|
||||
{$ifndef NOPASS2}
|
||||
{$ifdef newcg}
|
||||
tg.setfirsttemp(procinfo^.firsttemp_offset);
|
||||
@ -1636,6 +1640,8 @@ begin
|
||||
while symtablestack^.symtabletype=objectsymtable do
|
||||
symtablestack:=symtablestack^.next;
|
||||
|
||||
aktmaxfpuregisters:=oldaktmaxfpuregisters;
|
||||
|
||||
{ restore filepos, the switches are already set }
|
||||
aktfilepos:=savepos;
|
||||
{ restore labels }
|
||||
@ -1939,7 +1945,12 @@ end.
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.42 2000-01-16 22:17:12 peter
|
||||
Revision 1.43 2000-01-21 22:06:16 florian
|
||||
* fixed for the fix of bug 793
|
||||
* fpu variables modified by nested subroutines aren't regable anymore
|
||||
* $maxfpuregisters doesn't modify anymore the behavior of a procedure before
|
||||
|
||||
Revision 1.42 2000/01/16 22:17:12 peter
|
||||
* renamed call_offset to para_offset
|
||||
|
||||
Revision 1.41 2000/01/11 17:16:06 jonas
|
||||
|
@ -118,11 +118,8 @@ implementation
|
||||
begin
|
||||
p^.registers32:=1;
|
||||
{ further, the variable can't be put into a register }
|
||||
{$ifdef INCLUDEOK}
|
||||
exclude(pvarsym(p^.symtableentry)^.varoptions,vo_regable);
|
||||
{$else}
|
||||
pvarsym(p^.symtableentry)^.varoptions:=pvarsym(p^.symtableentry)^.varoptions-[vo_regable];
|
||||
{$endif}
|
||||
pvarsym(p^.symtableentry)^.varoptions:=
|
||||
pvarsym(p^.symtableentry)^.varoptions-[vo_fpuregable,vo_regable];
|
||||
end;
|
||||
end;
|
||||
if (pvarsym(p^.symtableentry)^.varspez=vs_const) then
|
||||
@ -481,7 +478,12 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.57 2000-01-07 01:14:46 peter
|
||||
Revision 1.58 2000-01-21 22:06:16 florian
|
||||
* fixed for the fix of bug 793
|
||||
* fpu variables modified by nested subroutines aren't regable anymore
|
||||
* $maxfpuregisters doesn't modify anymore the behavior of a procedure before
|
||||
|
||||
Revision 1.57 2000/01/07 01:14:46 peter
|
||||
* updated copyright to 2000
|
||||
|
||||
Revision 1.56 2000/01/06 01:08:59 pierre
|
||||
@ -603,4 +605,4 @@ end.
|
||||
- empty array constructors are now handled correctly (e.g. for sysutils.format)
|
||||
- comparsion of ansistrings was sometimes coded wrong
|
||||
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user