|
@@ -880,12 +880,11 @@ End;
|
|
(Pai386(hp1)^._operator = A_MOV)
|
|
(Pai386(hp1)^._operator = A_MOV)
|
|
Then
|
|
Then
|
|
Begin
|
|
Begin
|
|
- { Removes the second statement from
|
|
|
|
- mov %reg, mem
|
|
|
|
- mov mem, %reg }
|
|
|
|
If (Pai386(hp1)^.op1t = Pai386(p)^.op2t) and
|
|
If (Pai386(hp1)^.op1t = Pai386(p)^.op2t) and
|
|
(Pai386(hp1)^.op2t = Pai386(p)^.op1t)
|
|
(Pai386(hp1)^.op2t = Pai386(p)^.op1t)
|
|
Then
|
|
Then
|
|
|
|
+ {mov reg1, mem1 or mov mem1, reg1
|
|
|
|
+ mov mem2, reg2 mov reg2, mem2}
|
|
Begin
|
|
Begin
|
|
If (Pai386(hp1)^.op2t = top_ref)
|
|
If (Pai386(hp1)^.op2t = top_ref)
|
|
Then
|
|
Then
|
|
@@ -894,6 +893,8 @@ End;
|
|
TmpBool1 := Pai386(hp1)^.op2 = Pai386(p)^.op1;
|
|
TmpBool1 := Pai386(hp1)^.op2 = Pai386(p)^.op1;
|
|
If TmpBool1
|
|
If TmpBool1
|
|
Then
|
|
Then
|
|
|
|
+ {mov reg1, mem1 or mov mem1, reg1
|
|
|
|
+ mov mem2, reg1 mov reg2, mem1}
|
|
Begin
|
|
Begin
|
|
If (Pai386(hp1)^.op1t = top_ref)
|
|
If (Pai386(hp1)^.op1t = top_ref)
|
|
Then
|
|
Then
|
|
@@ -901,6 +902,9 @@ End;
|
|
TReference(Pai386(p)^.op2^))
|
|
TReference(Pai386(p)^.op2^))
|
|
Else TmpBool1 := (Pai386(hp1)^.op1 = Pai386(p)^.op2);
|
|
Else TmpBool1 := (Pai386(hp1)^.op1 = Pai386(p)^.op2);
|
|
If TmpBool1 Then
|
|
If TmpBool1 Then
|
|
|
|
+ { Removes the second statement from
|
|
|
|
+ mov reg1, mem1
|
|
|
|
+ mov mem1, reg1 }
|
|
Begin
|
|
Begin
|
|
{ hp1 := pai(p^.next);}
|
|
{ hp1 := pai(p^.next);}
|
|
AsmL^.remove(hp1);
|
|
AsmL^.remove(hp1);
|
|
@@ -939,17 +943,23 @@ End;
|
|
Dispose(hp2,Done);
|
|
Dispose(hp2,Done);
|
|
End
|
|
End
|
|
Else
|
|
Else
|
|
- { mov mem1, esi
|
|
|
|
- mov esi, mem2
|
|
|
|
|
|
+ { mov mem1, reg1
|
|
|
|
+ mov reg1, mem2
|
|
mov mem2, reg2
|
|
mov mem2, reg2
|
|
to:
|
|
to:
|
|
- mov mem1, esi
|
|
|
|
|
|
+ mov mem1, reg1
|
|
mov mem1, reg2
|
|
mov mem1, reg2
|
|
- mov esi, mem2}
|
|
|
|
|
|
+ mov reg1, mem2}
|
|
Begin
|
|
Begin
|
|
Pai386(hp1)^.opxt := top_ref + top_reg shl 4;
|
|
Pai386(hp1)^.opxt := top_ref + top_reg shl 4;
|
|
- Pai386(hp1)^.op1 := Pai386(p)^.op1;
|
|
|
|
|
|
+ Pai386(hp1)^.op1 := Pai386(hp1)^.op2; {move the treference}
|
|
TReference(Pai386(hp1)^.op1^) := TReference(Pai386(p)^.op1^);
|
|
TReference(Pai386(hp1)^.op1^) := TReference(Pai386(p)^.op1^);
|
|
|
|
+ If Assigned(TReference(Pai386(p)^.op1^).Symbol) Then
|
|
|
|
+ Begin
|
|
|
|
+ New(TReference(Pai386(hp1)^.op1^).Symbol);
|
|
|
|
+ TReference(Pai386(hp1)^.op1^).Symbol^ :=
|
|
|
|
+ TReference(Pai386(p)^.op1^).Symbol^;
|
|
|
|
+ End;
|
|
Pai386(hp1)^.op2 := Pai386(hp2)^.op2;
|
|
Pai386(hp1)^.op2 := Pai386(hp2)^.op2;
|
|
Pai386(hp2)^.opxt := top_reg + top_ref shl 4;
|
|
Pai386(hp2)^.opxt := top_reg + top_ref shl 4;
|
|
Pai386(hp2)^.op2 := Pai386(hp2)^.op1;
|
|
Pai386(hp2)^.op2 := Pai386(hp2)^.op1;
|
|
@@ -1621,7 +1631,10 @@ end;
|
|
End.
|
|
End.
|
|
{
|
|
{
|
|
$Log$
|
|
$Log$
|
|
- Revision 1.12 1998-05-24 15:20:59 jonas
|
|
|
|
|
|
+ Revision 1.13 1998-05-24 18:42:37 jonas
|
|
|
|
+ * final bugfilx for mov optimizes, remake3 with optimizations works again!
|
|
|
|
+
|
|
|
|
+ Revision 1.12 1998/05/24 15:20:59 jonas
|
|
* 2 bugs fixed in mov peepholeoptimizes
|
|
* 2 bugs fixed in mov peepholeoptimizes
|
|
|
|
|
|
Revision 1.11 1998/05/23 01:21:00 peter
|
|
Revision 1.11 1998/05/23 01:21:00 peter
|