mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-03 12:30:31 +02:00
* corrected small syntax error in part between {ifdef ver0_99_11}
+ added fistp/fild optimization between {ifdef ver0_99_11}
This commit is contained in:
parent
957fdc1f2d
commit
2fcfb2ce50
@ -314,12 +314,25 @@ Begin
|
||||
End
|
||||
End
|
||||
End;
|
||||
A_FSTP:
|
||||
A_FSTP
|
||||
{$IfDef Ver0_99_11}
|
||||
,A_FISTP
|
||||
{$EndIf Ver0_99_11}
|
||||
|
||||
:
|
||||
Begin
|
||||
If (Pai386(p)^.op1t = top_ref) And
|
||||
GetNextInstruction(p, hp1) And
|
||||
(Pai(hp1)^.typ = ait_instruction) And
|
||||
(Pai386(hp1)^._operator = A_FLD) And
|
||||
{$IfDef Ver0_99_11}
|
||||
((
|
||||
{$EndIf Ver0_99_11}
|
||||
(Pai386(hp1)^._operator = A_FLD) And
|
||||
{$IfDef Ver0_99_11}
|
||||
(Pai386(p)^._operator = A_FSTP)) Or
|
||||
((Pai386(p)^._operator = A_FISTP) And
|
||||
(Pai386(hp1)^._operator = A_FILD))) And
|
||||
{$EndIf Ver0_99_11}
|
||||
(Pai386(hp1)^.op1t = top_ref) And
|
||||
(Pai386(hp1)^.Size = Pai386(p)^.Size) And
|
||||
RefsEqual(TReference(Pai386(p)^.op1^), TReference(Pai386(hp1)^.op1^))
|
||||
@ -345,7 +358,14 @@ Begin
|
||||
{fst can't store an extended value!}
|
||||
If (Pai386(p)^.Size <> S_FX) Then
|
||||
Begin
|
||||
Pai386(p)^._operator := A_FST;
|
||||
{$IfDef Ver0_99_11}
|
||||
If (Pai386(p)^._operator = A_FLD) Then
|
||||
{$EndIf Ver0_99_11}
|
||||
Pai386(p)^._operator := A_FST
|
||||
{$IfDef Ver0_99_11}
|
||||
Else Pai386(p)^._operator := A_FIST
|
||||
{$EndIf Ver0_99_11}
|
||||
;
|
||||
AsmL^.Remove(hp1);
|
||||
Dispose(hp1, done)
|
||||
End
|
||||
@ -1300,7 +1320,7 @@ Begin
|
||||
GetNextInstruction(hp1, hp2) And
|
||||
(hp2^.typ = ait_instruction) And
|
||||
((Pai386(hp2)^._operator = A_LEAVE) or
|
||||
(Pai386(hp2)^._operator = A_RET])) And
|
||||
(Pai386(hp2)^._operator = A_RET)) And
|
||||
(TReference(Pai386(p)^.Op1^).Base = ProcInfo.FramePointer) And
|
||||
(TReference(Pai386(p)^.Op1^).Index = R_NO) And
|
||||
(TReference(Pai386(p)^.Op1^).Offset >= ProcInfo.RetOffset) And
|
||||
@ -1535,7 +1555,11 @@ End.
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.25 1998-12-02 16:23:29 jonas
|
||||
Revision 1.26 1998-12-09 18:16:13 jonas
|
||||
* corrected small syntax error in part between {ifdef ver0_99_11}
|
||||
+ added fistp/fild optimization between {ifdef ver0_99_11}
|
||||
|
||||
Revision 1.25 1998/12/02 16:23:29 jonas
|
||||
* changed "if longintvar in set" to case or "if () or () .." statements
|
||||
* tree.pas: changed inlinenumber (and associated constructor/vars) to a byte
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user