[Bug rtl-optimization/50696] [x32] Unnecessary lea

hjl.tools at gmail dot com gcc-bugzilla@gcc.gnu.org
Tue Oct 11 20:09:00 GMT 2011


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50696

H.J. Lu <hjl.tools at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|target                      |rtl-optimization

--- Comment #2 from H.J. Lu <hjl.tools at gmail dot com> 2011-10-11 20:09:10 UTC ---
For

(insn 37 35 39 3 (parallel [
            (set (reg:SI 88) 
                (plus:SI (reg:SI 89) 
                    (reg:SI 100)))
            (clobber (reg:CC 17 flags))
        ]) x.i:12 253 {*addsi_1}
     (expr_list:REG_DEAD (reg:SI 89) 
        (expr_list:REG_UNUSED (reg:CC 17 flags)
            (nil))))

(insn 39 37 41 3 (set (mem:SI (zero_extend:DI (reg:SI 88)) [0 MEM[symbol: x,
index: D.2735_1, step: 4, offset: 4294967292B]+0 S4 A32])
        (reg/v:SI 85 [ i ])) x.i:12 64 {*movsi_internal}
     (expr_list:REG_DEAD (reg:DI 87)
        (nil)))

combine replaces zero_extend with and. It may be a valid
option for normal computation.  But it messes up the
POINTERS_EXTEND_UNSIGNED > 0 target where address is
zero-extendeded from ptr_mode to Pmode.



More information about the Gcc-bugs mailing list