mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-11 20:29:14 +02:00
+ Peephole optimizer MovPush2Push
git-svn-id: trunk@38195 -
This commit is contained in:
parent
961f7fd25b
commit
980c689d37
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user