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

Jeffrey A. Law <law at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|---                         |FIXED

--- Comment #5 from Jeffrey A. Law <law at gcc dot gnu.org> ---
Fixed on the trunk.   Most likely all the work we've done to fixup how we
handle SImode results (by indirecting through a DImode extended temporary):

(insn 11 73 12 3 (set (reg:SI 140)
        (zero_extend:SI (mem:QI (plus:DI (reg/v/f:DI 135 [ x ])
                    (const_int 1 [0x1])) [0 MEM <char[1:12]> [(void *)x_2(D)]+1
S1 A8]))) "j.c":4:11 125 {*zero_extendqisi2_internal}
     (nil))
(insn 12 11 13 3 (set (reg:DI 141)
        (sign_extend:DI (plus:SI (reg:SI 140)
                (const_int -111 [0xffffffffffffff91])))) "j.c":4:11 8
{addsi3_extended}
     (nil))
(insn 13 12 14 3 (set (reg:SI 136)
        (subreg/s/u:SI (reg:DI 141) 0)) "j.c":4:11 278 {*movsi_internal}
     (expr_list:REG_EQUAL (plus:SI (reg:SI 140)
            (const_int -111 [0xffffffffffffff91]))
        (nil)))
(insn 14 13 15 3 (set (reg:DI 142)
        (sign_extend:DI (reg:SI 136))) "j.c":4:11 127 {*extendsidi2_internal}
     (nil))
(jump_insn 15 14 74 3 (set (pc)
        (if_then_else (ne (reg:DI 142)
                (const_int 0 [0]))
            (label_ref 64)
            (pc))) "j.c":4:11 371 {*branchdi}
     (int_list:REG_BR_PROB 536870916 (nil))

In particular note insns 12, 13, 14.  The extention at insn 14 will be removed
as redundant leaving us with code like this for any given byte:

        lbu     a5,2(a0)        # 16    [c=28 l=4] 
*zero_extendqisi2_internal/1
        addiw   a5,a5,-119      # 17    [c=8 l=4]  addsi3_extended/1
        mv      a4,a5   # 18    [c=4 l=4]  *movsi_internal/0
        bne     a5,zero,.L2     # 20    [c=12 l=4]  *branchdi


Where the copy from a5->a4 is needed for the exit path.

Reply via email to