This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/50603] [x32] Unnecessary lea


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

Uros Bizjak <ubizjak at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2011-10-03
     Ever Confirmed|0                           |1

--- Comment #1 from Uros Bizjak <ubizjak at gmail dot com> 2011-10-03 19:13:02 UTC ---
This is the same issue as in:

FAIL: gcc.target/i386/pr45670.c scan-assembler-not lea[lq]

We expand to addsi_1 with memory operand:

(insn 7 6 9 2 (parallel [
            (set (reg:SI 68)
                (plus:SI (reg:SI 69)
                    (mem/f/c/i:SI (symbol_ref:DI ("foo") [flags 0x40] 
<var_decl  0x7f36bc52a140 foo>) [2 foo+0 S4 A32])))
            (clobber (reg:CC 17 flags))
        ]) pr50603.c:3 253 {*addsi_1}
     (expr_list:REG_DEAD (reg:SI 69)
        (expr_list:REG_UNUSED (reg:CC 17 flags)
            (nil))))

and then fail at combine with:

Trying 6, 7 -> 9:
Failed to match this instruction:
(set (reg:SI 70 [ *D.3235_5 ])
    (mem:SI (zero_extend:DI (plus:SI (mult:SI (reg/v:SI 65 [ x ])
                    (const_int 4 [0x4]))
                (mem/f/c/i:SI (symbol_ref:DI ("foo") [flags 0x40]  <var_decl
0x7f36bc52a140 foo>) [2 foo+0 S4 A32]))) [3 *D.3235_5+0 S4 A32]))


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]