mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-11-05 19:49:28 +01:00
* fix reg. allocs even for procedures without labels
git-svn-id: trunk@21309 -
This commit is contained in:
parent
17dd362a5a
commit
8832a34b67
@ -119,10 +119,12 @@ Unit aopt;
|
|||||||
Begin
|
Begin
|
||||||
CreateUsedRegs(Regs);
|
CreateUsedRegs(Regs);
|
||||||
With LabelInfo^ Do
|
With LabelInfo^ Do
|
||||||
|
begin
|
||||||
If (LabelDif <> 0) Then
|
If (LabelDif <> 0) Then
|
||||||
Begin
|
Begin
|
||||||
GetMem(LabelTable, LabelDif*SizeOf(TLabelTableItem));
|
GetMem(LabelTable, LabelDif*SizeOf(TLabelTableItem));
|
||||||
FillChar(LabelTable^, LabelDif*SizeOf(TLabelTableItem), 0);
|
FillChar(LabelTable^, LabelDif*SizeOf(TLabelTableItem), 0);
|
||||||
|
end;
|
||||||
p := BlockStart;
|
p := BlockStart;
|
||||||
While (P <> BlockEnd) Do
|
While (P <> BlockEnd) Do
|
||||||
Begin
|
Begin
|
||||||
@ -211,7 +213,7 @@ Unit aopt;
|
|||||||
(p.typ in (SkipInstr - [ait_regalloc])) Do
|
(p.typ in (SkipInstr - [ait_regalloc])) Do
|
||||||
P := tai(P.Next)
|
P := tai(P.Next)
|
||||||
End;
|
End;
|
||||||
End;
|
end;
|
||||||
ReleaseUsedRegs(Regs);
|
ReleaseUsedRegs(Regs);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
@ -227,6 +229,7 @@ Unit aopt;
|
|||||||
LabelInfo^.highlabel:=0;
|
LabelInfo^.highlabel:=0;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure tasmoptimizer.pass_1;
|
procedure tasmoptimizer.pass_1;
|
||||||
begin
|
begin
|
||||||
findlohilabels;
|
findlohilabels;
|
||||||
@ -290,8 +293,11 @@ Unit aopt;
|
|||||||
End;
|
End;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
|
||||||
Destructor TAsmOptimizer.Destroy;
|
Destructor TAsmOptimizer.Destroy;
|
||||||
Begin
|
Begin
|
||||||
|
if assigned(LabelInfo^.LabelTable) then
|
||||||
|
Freemem(LabelInfo^.LabelTable);
|
||||||
Dispose(LabelInfo)
|
Dispose(LabelInfo)
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user