mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-11-09 16:43:25 +01:00
* forgotten part of previous commit: fix BccB2Cond optimization on arm
git-svn-id: trunk@42684 -
This commit is contained in:
parent
ba0768b6a6
commit
0a0397c9f5
@ -2315,6 +2315,7 @@ Implementation
|
|||||||
CanBeCond(hp1) and
|
CanBeCond(hp1) and
|
||||||
{ stop on labels }
|
{ stop on labels }
|
||||||
not(hp1.typ=ait_label) and
|
not(hp1.typ=ait_label) and
|
||||||
|
{ avoid that we cannot recognize the case BccB2Cond }
|
||||||
not((hp1.typ=ait_instruction) and (taicpu(hp1).opcode=A_B)) do
|
not((hp1.typ=ait_instruction) and (taicpu(hp1).opcode=A_B)) do
|
||||||
begin
|
begin
|
||||||
inc(l);
|
inc(l);
|
||||||
@ -2393,10 +2394,17 @@ Implementation
|
|||||||
{ skip hp1 to <several moves 2> }
|
{ skip hp1 to <several moves 2> }
|
||||||
GetNextInstruction(hp1, hp1);
|
GetNextInstruction(hp1, hp1);
|
||||||
while assigned(hp1) and
|
while assigned(hp1) and
|
||||||
CanBeCond(hp1) do
|
CanBeCond(hp1) and
|
||||||
|
(l<=3) do
|
||||||
begin
|
begin
|
||||||
inc(l);
|
inc(l);
|
||||||
GetNextInstruction(hp1, hp1);
|
if MustBeLast(hp1) then
|
||||||
|
begin
|
||||||
|
GetNextInstruction(hp1, hp1);
|
||||||
|
break;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
GetNextInstruction(hp1, hp1);
|
||||||
end;
|
end;
|
||||||
{ hp1 points to yyy: }
|
{ hp1 points to yyy: }
|
||||||
if assigned(hp1) and
|
if assigned(hp1) and
|
||||||
@ -2409,7 +2417,13 @@ Implementation
|
|||||||
repeat
|
repeat
|
||||||
if hp1.typ=ait_instruction then
|
if hp1.typ=ait_instruction then
|
||||||
taicpu(hp1).condition:=condition;
|
taicpu(hp1).condition:=condition;
|
||||||
GetNextInstruction(hp1,hp1);
|
if MustBeLast(hp1) then
|
||||||
|
begin
|
||||||
|
GetNextInstruction(hp1, hp1);
|
||||||
|
break;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
GetNextInstruction(hp1, hp1);
|
||||||
until not(assigned(hp1)) or
|
until not(assigned(hp1)) or
|
||||||
not(CanBeCond(hp1)) or
|
not(CanBeCond(hp1)) or
|
||||||
((hp1.typ=ait_instruction) and (taicpu(hp1).opcode=A_B));
|
((hp1.typ=ait_instruction) and (taicpu(hp1).opcode=A_B));
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user