A partial example of where "condition_in" shows its power (compiled code
from fpc\packages\fcl-base\src\advancedipc.pp)
BEFORE:
...
jb .Lj178
subl $17,%eax
cmpl $26,%eax
jb .Lj178
cmpl $30,%eax
stc
je .Lj178
subl $32,%eax
cmpl $26,%eax
.Lj178:
jc .Lj180 (Appears later in the code)
...
AFTER:
...
jb .Lj180 <-- Label changed
subl $17,%eax
cmpl $26,%eax
jb .Lj180 <-- Label changed
cmpl $30,%eax
stc
je .Lj178
subl $32,%eax
cmpl $26,%eax
.Lj178:
jc .Lj180 (Appears later in the code)
...
In this case, 'condition_in' detects that C_C is a subset of C_B
(they're actually equivalent in this case... both branch if the Carry
Flag is set). This particular optimisation means that the code only has
to branch once if the JB conditions are met, rather than twice.
Gareth aka. Kit
--
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel