This commit is contained in:
Jonas Maebe 1999-06-23 12:33:52 +00:00
parent 8bbe79ac69
commit 4e6bcf9ed7

View File

@ -808,27 +808,39 @@ Begin
Dispose(hp2,Done); Dispose(hp2,Done);
End End
Else Else
If (Pai386(p)^.oper[1].reg <> Pai386(hp2)^.oper[1].reg) And
not(RegInRef(Pai386(p)^.oper[1].reg,Pai386(p)^.oper[0].ref^)) And
not(RegInRef(Pai386(hp2)^.oper[1].reg,Pai386(hp2)^.oper[0].ref^))
Then
{ mov mem1, reg1 mov mem1, reg1 { mov mem1, reg1 mov mem1, reg1
mov reg1, mem2 mov reg1, mem2 mov reg1, mem2 mov reg1, mem2
mov mem2, reg2 mov mem2, reg1 mov mem2, reg2 mov mem2, reg1
to: to: to: to:
mov mem1, reg1 mov mem1, reg1 mov mem1, reg1 mov mem1, reg1
mov mem1, reg2 mov reg1, mem2 mov mem1, reg2 mov reg1, mem2
mov reg1, mem2} mov reg1, mem2
Begin
If (Pai386(p)^.oper[1].reg <> Pai386(hp2)^.oper[1].reg) Then or (if mem1 depends on reg1
Begin and/or if mem2 depends on reg2)
Pai386(hp1)^.LoadRef(0,newreference(Pai386(p)^.oper[0].ref^)); to:
Pai386(hp1)^.LoadReg(1,Pai386(hp2)^.oper[1].reg); mov mem1, reg1
End mov reg1, mem2
mov reg1, reg2
}
Begin
Pai386(hp1)^.LoadRef(0,newreference(Pai386(p)^.oper[0].ref^));
Pai386(hp1)^.LoadReg(1,Pai386(hp2)^.oper[1].reg);
Pai386(hp2)^.LoadRef(1,newreference(Pai386(hp2)^.oper[0].ref^));
Pai386(hp2)^.LoadReg(0,Pai386(p)^.oper[1].reg);
End
Else
If (Pai386(hp1)^.Oper[0].reg <> Pai386(hp2)^.Oper[1].reg) Then
Pai386(hp2)^.LoadReg(0,Pai386(hp1)^.Oper[0].reg)
Else Else
Begin Begin
AsmL^.Remove(hp1); AsmL^.Remove(hp2);
Dispose(hp1, Done) Dispose(hp2, Done);
End; End
Pai386(hp2)^.LoadRef(1,newreference(Pai386(hp2)^.oper[0].ref^));
Pai386(hp2)^.LoadReg(0,Pai386(p)^.oper[1].reg);
End;
End; End;
End End
Else Else
@ -1521,7 +1533,13 @@ End.
{ {
$Log$ $Log$
Revision 1.55 1999-06-18 09:55:31 peter Revision 1.56 1999-06-23 12:33:52 jonas
* merged
Revision 1.54.2.2 1999/06/23 11:55:08 jonas
* fixed bug in "mov mem1,reg1;mov reg1,mem2;mov mem2,reg2" optimization
Revision 1.55 1999/06/18 09:55:31 peter
* merged * merged
Revision 1.54.2.1 1999/06/18 09:52:40 peter Revision 1.54.2.1 1999/06/18 09:52:40 peter