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

Martin Liška <marxin at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|needs-bisection             |
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2019-05-02
                 CC|                            |ebotcazou at gcc dot gnu.org
     Ever confirmed|0                           |1

--- Comment #2 from Martin Liška <marxin at gcc dot gnu.org> ---
To be honest, I can't see what you see with GCC 6. I've got:

        bl      __popcountsi2
        ldr     r3, .L6+16
        str     r0, [r3]
        lsl     r0, r4, #16
        lsr     r0, r0, #16
        pop     {r4, pc}
.L7:

while GCC 10 does:

        bl      __popcountsi2
        ldr     r3, .L6+16
        str     r0, [r3]
        mov     r0, r4  @ movhi
        pop     {r4, pc}
.L7:

Which is a change that started with r242326:

commit 1998c023a3ed6c59d8f1eea3a34528a9d6a93fe1 (refs/bisect/bad)
Author: ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Fri Nov 11 22:38:33 2016 +0000

            PR rtl-optimization/59461
            * doc/rtl.texi (paradoxical subregs): Add missing word.
            * combine.c (reg_nonzero_bits_for_combine): Do not discard results
            in modes with precision larger than that of last_set_mode.
            * rtlanal.c (nonzero_bits1) <SUBREG>: If WORD_REGISTER_OPERATIONS
is
            set and LOAD_EXTEND_OP is appropriate, propagate results from inner
            REGs to paradoxical SUBREGs.
            (num_sign_bit_copies1) <SUBREG>: Likewise.  Check that the mode is
not
            larger than a word before invoking LOAD_EXTEND_OP on it.


    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@242326
138bc75d-0d04-0410-961f-82ee72b054a4

Reply via email to