http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59880
--- Comment #3 from H.J. Lu <hjl.tools at gmail dot com> --- (In reply to Jakub Jelinek from comment #2) > Ah, indeed, it is split because of the: > (define_insn_and_split "*lea<mode>" > [(set (match_operand:SWI48 0 "register_operand" "=r") > (match_operand:SWI48 1 "address_no_seg_operand" "Ts"))] > splitter. I'd say it is a bug in ix86_avoid_lea_for_addr, that shouldn't > have returned true in this case, where the second operand is (zero_extend:DI > (reg:SI)). My patch for PR 59379: http://gcc.gnu.org/ml/gcc-patches/2014-01/msg01166.html doesn't have this problem Should we consider my patch instead?