This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/50603] [x32] Unnecessary lea
- From: "ubizjak at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 03 Oct 2011 19:13:02 +0000
- Subject: [Bug target/50603] [x32] Unnecessary lea
- Auto-submitted: auto-generated
- References: <bug-50603-4@http.gcc.gnu.org/bugzilla/>
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]))