mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-09 12:46:27 +02:00
* x86: Minor efficiency gains in OptPass1CMP
This commit is contained in:
parent
068b8f9e9d
commit
e406cbd9c8
@ -7902,6 +7902,7 @@ unit aoptx86;
|
||||
p_jump := hp1;
|
||||
while Assigned(p_jump) and MatchInstruction(p_jump, A_JCC, []) do
|
||||
begin
|
||||
Prefetch(p_jump.Next);
|
||||
if IsJumpToLabel(taicpu(p_jump)) then
|
||||
begin
|
||||
{ Do jump optimisations first in case the condition becomes
|
||||
@ -7985,7 +7986,7 @@ unit aoptx86;
|
||||
|
||||
DebugMsg(SPeepholeOptimization + 'CMP/Jcc/@Lbl/CMP/Jcc -> CMP/Jcc, redirecting first jump', p_jump);
|
||||
taicpu(p_jump).loadref(0, taicpu(hp1_dist).oper[0]^.ref^); { This also increases the reference count }
|
||||
Result := True;
|
||||
Include(OptsToCheck, aoc_ForceNewIteration);
|
||||
{ Don't exit yet. Since p and p_jump haven't actually been
|
||||
removed, we can check for more on this iteration }
|
||||
end
|
||||
@ -8060,6 +8061,13 @@ unit aoptx86;
|
||||
RemoveInstruction(hp2);
|
||||
Result := True;
|
||||
{ Continue the while loop in case "Jcc/CMP" follows the second CMP that was just removed }
|
||||
end
|
||||
else
|
||||
begin
|
||||
{ hp2 is the next instruction, so save time and just set p_jump
|
||||
to it instead of calling GetNextInstruction below }
|
||||
p_jump := hp2;
|
||||
Continue;
|
||||
end;
|
||||
|
||||
GetNextInstruction(p_jump, p_jump);
|
||||
|
Loading…
Reference in New Issue
Block a user