|
@@ -315,6 +315,18 @@ Implementation
|
|
else
|
|
else
|
|
asml.InsertAfter(dealloc,p);
|
|
asml.InsertAfter(dealloc,p);
|
|
|
|
|
|
|
|
+ { try to move the allocation of the target register }
|
|
|
|
+ GetLastInstruction(movp,hp1);
|
|
|
|
+ alloc:=FindRegAlloc(taicpu(movp).oper[0]^.reg,tai(hp1.Next));
|
|
|
|
+ if assigned(alloc) then
|
|
|
|
+ begin
|
|
|
|
+ asml.Remove(alloc);
|
|
|
|
+ asml.InsertBefore(alloc,p);
|
|
|
|
+ { adjust used regs }
|
|
|
|
+ IncludeRegInUsedRegs(taicpu(movp).oper[0]^.reg,UsedRegs);
|
|
|
|
+ end;
|
|
|
|
+
|
|
|
|
+ { finally get rid of the mov }
|
|
taicpu(p).loadreg(0,taicpu(movp).oper[0]^.reg);
|
|
taicpu(p).loadreg(0,taicpu(movp).oper[0]^.reg);
|
|
asml.remove(movp);
|
|
asml.remove(movp);
|
|
movp.free;
|
|
movp.free;
|