On 20/02/2020 20:34, Florian Klämpfl wrote:
Am 20.02.20 um 21:25 schrieb J. Gareth Moreton:
but if you run all of the "test/cg/tcnvint3" tests with the "-a" option, you will notice such sequences in some of the ".s" file.

With full -O3?

Indeed so, with full -O4 even.  When compiling "/test/cg/tcnvint3.pp" (a test that already exists) with -O4, we get things like this in the assembler dump - command line = "\pp\bin\x86_64-win64\ppcx64 -O4 test\cg\tcnvint3b.pp":

# Peephole Optimization: movq $16711680,%rax -> movl $16711680,%eax (immediate can be represented with just 32 bits)
    movl    $16711680,%eax
    cmpl    $16711680,%eax
    je    .Lj29
    call    P$TCNVINT3_$$_FAIL
    jmp    .Lj30
    .p2align 4,,10
    .p2align 3
.Lj29:

In this case, unless there's a freak CPU error, everything between "je .Lj29" and its destination label will never execute (if "je .Lj29" is changed to "jmp .Lj29", everything between them will be stripped by pass 1 of the peephole optimiser).

Gareth aka. Kit

_______________________________________________
fpc-devel maillist  -  [email protected]
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to