+ Peephole optimizer MovPush2Push

git-svn-id: trunk@38195 -
This commit is contained in:
florian 2018-02-10 22:20:04 +00:00
parent 961f7fd25b
commit 980c689d37

View File

@ -118,6 +118,22 @@ unit aoptcpu;
asml.remove(hp2);
hp2.free;
result:=true;
end
else if MatchInstruction(p,A_MOV,[S_W]) and
MatchOpType(taicpu(p),top_reg,top_reg) and
GetNextInstruction(p, hp1) and
MatchInstruction(hp1,A_PUSH,[S_W]) and
MatchOperand(taicpu(p).oper[1]^,taicpu(hp1).oper[0]^) and
assigned(FindRegDealloc(taicpu(hp1).oper[0]^.reg,tai(hp1.Next))) then
begin
DebugMsg('Peephole optimizer MovPush2Push',p);
taicpu(hp1).loadreg(0,taicpu(p).oper[0]^.reg);
{ take care of the register (de)allocs following p }
UpdateUsedRegs(tai(p.next));
asml.remove(p);
p.free;
p:=hp1;
result:=true;
end;
end;
A_SUB: