mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-21 08:29:28 +02:00
- removed code not used for years
git-svn-id: trunk@43575 -
This commit is contained in:
parent
d444f750f9
commit
9e307f5c3a
@ -160,91 +160,6 @@ unit aoptcpu;
|
||||
A_MOVSX,
|
||||
A_MOVZX :
|
||||
Result:=OptPass1Movx(p);
|
||||
(* should not be generated anymore by the current code generator
|
||||
A_POP:
|
||||
begin
|
||||
if target_info.system=system_i386_go32v2 then
|
||||
begin
|
||||
{ Transform a series of pop/pop/pop/push/push/push to }
|
||||
{ 'movl x(%esp),%reg' for go32v2 (not for the rest, }
|
||||
{ because I'm not sure whether they can cope with }
|
||||
{ 'movl x(%esp),%reg' with x > 0, I believe we had }
|
||||
{ such a problem when using esp as frame pointer (JM) }
|
||||
if (taicpu(p).oper[0]^.typ = top_reg) then
|
||||
begin
|
||||
hp1 := p;
|
||||
hp2 := p;
|
||||
l := 0;
|
||||
while getNextInstruction(hp1,hp1) and
|
||||
(hp1.typ = ait_instruction) and
|
||||
(taicpu(hp1).opcode = A_POP) and
|
||||
(taicpu(hp1).oper[0]^.typ = top_reg) do
|
||||
begin
|
||||
hp2 := hp1;
|
||||
inc(l,4);
|
||||
end;
|
||||
getLastInstruction(p,hp3);
|
||||
l1 := 0;
|
||||
while (hp2 <> hp3) and
|
||||
assigned(hp1) and
|
||||
(hp1.typ = ait_instruction) and
|
||||
(taicpu(hp1).opcode = A_PUSH) and
|
||||
(taicpu(hp1).oper[0]^.typ = top_reg) and
|
||||
(taicpu(hp1).oper[0]^.reg.enum = taicpu(hp2).oper[0]^.reg.enum) do
|
||||
begin
|
||||
{ change it to a two op operation }
|
||||
taicpu(hp2).oper[1]^.typ:=top_none;
|
||||
taicpu(hp2).ops:=2;
|
||||
taicpu(hp2).opcode := A_MOV;
|
||||
taicpu(hp2).loadoper(1,taicpu(hp1).oper[0]^);
|
||||
reference_reset(tmpref);
|
||||
tmpRef.base.enum:=R_INTREGISTER;
|
||||
tmpRef.base.number:=NR_STACK_POINTER_REG;
|
||||
convert_register_to_enum(tmpref.base);
|
||||
tmpRef.offset := l;
|
||||
taicpu(hp2).loadRef(0,tmpRef);
|
||||
hp4 := hp1;
|
||||
getNextInstruction(hp1,hp1);
|
||||
asml.remove(hp4);
|
||||
hp4.free;
|
||||
getLastInstruction(hp2,hp2);
|
||||
dec(l,4);
|
||||
inc(l1);
|
||||
end;
|
||||
if l <> -4 then
|
||||
begin
|
||||
inc(l,4);
|
||||
for l1 := l1 downto 1 do
|
||||
begin
|
||||
getNextInstruction(hp2,hp2);
|
||||
dec(taicpu(hp2).oper[0]^.ref^.offset,l);
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
else
|
||||
begin
|
||||
if (taicpu(p).oper[0]^.typ = top_reg) and
|
||||
GetNextInstruction(p, hp1) and
|
||||
(tai(hp1).typ=ait_instruction) and
|
||||
(taicpu(hp1).opcode=A_PUSH) and
|
||||
(taicpu(hp1).oper[0]^.typ = top_reg) and
|
||||
(taicpu(hp1).oper[0]^.reg.enum=taicpu(p).oper[0]^.reg.enum) then
|
||||
begin
|
||||
{ change it to a two op operation }
|
||||
taicpu(p).oper[1]^.typ:=top_none;
|
||||
taicpu(p).ops:=2;
|
||||
taicpu(p).opcode := A_MOV;
|
||||
taicpu(p).loadoper(1,taicpu(p).oper[0]^);
|
||||
reference_reset(tmpref);
|
||||
TmpRef.base.enum := R_ESP;
|
||||
taicpu(p).loadRef(0,TmpRef);
|
||||
asml.remove(hp1);
|
||||
hp1.free;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
*)
|
||||
A_PUSH:
|
||||
begin
|
||||
if (taicpu(p).opsize = S_W) and
|
||||
|
Loading…
Reference in New Issue
Block a user