https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116615

Palmer Dabbelt <palmer at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |palmer at gcc dot gnu.org

--- Comment #2 from Palmer Dabbelt <palmer at gcc dot gnu.org> ---
I didn't remember what this means, which probably means I'd never looked at it
before, which probably means it just predates me working on this stuff.  Andrew
might remember, but looks like MIPS has it defined as 0 and IIRC a lot of the
early port is MIPS-ish (though I think we pulled in a bunch of arm64 at some
point, so not 100% sure there).

So I'd bet this is just an oversight.  That said, from reading the docs I can't
quite figure out what's going on -- I'd expect 

long foo(long a, long b, long c, long d)
{
    return a || b || c || d;
}

to generate something branchy, but it looks fine under -O1.  I do get very
branchy code under -O0:

foo:
.LFB0:
        .cfi_startproc
        addi    sp,sp,-48
        .cfi_def_cfa_offset 48
        sd      ra,40(sp)
        sd      s0,32(sp)
        .cfi_offset 1, -8
        .cfi_offset 8, -16
        addi    s0,sp,48
        .cfi_def_cfa 8, 0
        sd      a0,-24(s0)
        sd      a1,-32(s0)
        sd      a2,-40(s0)
        sd      a3,-48(s0)
        ld      a5,-24(s0)
        bne     a5,zero,.L2
        ld      a5,-32(s0)
        bne     a5,zero,.L2
        ld      a5,-40(s0)
        bne     a5,zero,.L2
        ld      a5,-48(s0)
        beq     a5,zero,.L3
.L2:
        li      a5,1
        j       .L4
.L3:
        li      a5,0
.L4:
        mv      a0,a5
        ld      ra,40(sp)
        .cfi_restore 1
        ld      s0,32(sp)
        .cfi_restore 8
        .cfi_def_cfa 2, 48
        addi    sp,sp,48
        .cfi_def_cfa_offset 0
        jr      ra
        .cfi_endproc

so is some other optimization just eating the branches and re-optimizing for us
here?  I'm getting basically the same thing with
LOGICAL_OP_NON_SHORT_CIRCUIT=1, so I'm kind of worried I'm just
misunderstanding the docs here.

Reply via email to