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

Reply via email to