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

Bill Schmidt <wschmidt at gcc dot gnu.org> changed:

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

--- Comment #1 from Bill Schmidt <wschmidt at gcc dot gnu.org> ---
Regarding the latter question, I'm surprised it's not being done.  This
behavior is controlled by -fvariable-expansion-in-unroller, which was enabled
by default for PowerPC targets a couple of releases back.  You reported this
against GCC 11.2, but I'm skeptical.  What options are you using?

Compiling with -O2 and current trunk, I see variable expansion kicking in, and
I also see the same base register in use in all references in the loop:

test:
.LFB0:
        .cfi_startproc
        .localentry     test,1
        slwi 4,4,1
        li 10,0
        li 7,0
        addi 9,3,-4
        extsw 4,4
        andi. 6,4,0x3
        addi 5,4,-1
        mr 8,4
        beq 0,.L9
        cmpdi 0,6,1
        beq 0,.L13
        cmpdi 0,6,2
        bne 0,.L22
.L14:
        lwzu 6,4(9)
        addi 4,4,-1
        add 10,10,6
.L13:
        lwzu 6,4(9)
        cmpdi 0,4,1
        add 10,10,6
        beq 0,.L19
.L9:
        srdi 8,8,2
        mtctr 8
.L2:
        lwz 4,4(9)
        lwz 5,12(9)
        lwz 6,8(9)
        lwzu 8,16(9)
        add 10,4,10
        add 10,10,5
        add 7,6,7
        add 7,7,8
        bdnz .L2
.L19:
        add 3,10,7
        extsw 3,3
        blr
        .p2align 4,,15
.L22:
        lwz 10,0(3)
        mr 9,3
        mr 4,5
        b .L14

Reply via email to