> + if (!TARGET_OPT_AGU || optimize_function_for_size_p (cfun)) Surely optimize_insn_for_size_p (), so that cold blocks are optimized for size.
> + else if (ix86_use_lea_for_mov(insn, operands)) > + return "lea{q}\t{%a1, %0|%0, %a1}"; We're now getting the insn type and thus length wrong. Seems like a better change is ... (eq_attr "alternative" "16,17") (const_string "ssecvt") (match_operand 1 "pic_32bit_operand" "") (const_string "lea") + (match_test "ix86_use_lea_for_mov (insn)") + (const_string "lea") ] (Or something; can't be bothered to double-check that match_test is the right thing to use here.) Which will automatically use the proper mnemonic, and also get the instruction length right. r~