https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93611
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- If you mean /* ix86_avoid_lea_for_addr re-recognizes insn and may change operands[] array behind our back. */ pat = PATTERN (curr_insn); operands[0] = SET_DEST (pat); operands[1] = SET_SRC (pat); then no, this change wouldn't change anything on that. But yes, ix86_avoid_lea_for_addr probably at least theoretically needs the same treatment as in the patch. Another option would be instead of just clearing recog_data.insn copy the whole recog_data object to a temporary and back; that would mean the above wouldn't have to be done, but would be quite expensive (recog_data on x86_64 has ATM 1280 bytes).