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

Segher Boessenkool <segher at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |segher at gcc dot gnu.org
         Resolution|---                         |FIXED

--- Comment #5 from Segher Boessenkool <segher at gcc dot gnu.org> ---
Current trunk does (with -O2)

test:
        mr. 10,3
        lis 3,.LANCHOR0@ha
        la 3,.LANCHOR0@l(3)
        beqlr 0
        .p2align 5,,31
.L3:
        lbzu 9,1(3)
        cmpwi 7,9,0
        bne 7,.L3
        addic. 10,10,-1
        bne 0,.L3
        blr

and with -Os

test:
        lis 9,.LANCHOR0@ha
        la 9,.LANCHOR0@l(9)
.L2:
        cmpwi 7,3,0
        bne 7,.L3
        mr 3,9
        blr
.L3:
        lbzu 10,1(9)
        cmpwi 7,10,0
        bne 7,.L3
        addi 3,3,-1
        b .L2

Both are reasonable, with no obvious inefficiency; I'm closing this
bug as fixed.

(Note that since a few years we generate bdnz only in inner loops).

Reply via email to