===================================================================
@@ -5428,12 +5428,17 @@
operands[0] = SET_DEST (pat);
operands[1] = SET_SRC (pat);
- /* Emit all operations in SImode for zero-extended addresses. Recall
- that x86_64 inheretly zero-extends SImode operations to DImode. */
+ /* Emit all operations in SImode for zero-extended addresses. */
if (SImode_address_operand (operands[1], VOIDmode))
mode = SImode;
ix86_split_lea_for_addr (curr_insn, operands, mode);
+
+ /* Zero-extend return register to DImode for zero-extended addresses. */
+ if (mode != <MODE>mode)
+ emit_insn (gen_zero_extendsidi2
+ (operands[0], gen_lowpart ((mode), operands[0])));
+
DONE;
}
[(set_attr "type" "lea")