https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104581
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- I suspect that FOR_EACH_SUBRTX (iter, array, src, NONCONST) if (ix86_check_avx_upper_register (*iter)) { int status = ix86_avx_u128_mode_source (insn, *iter); if (status == AVX_U128_DIRTY) return status; } and ix86_avx_u128_mode_source walking defs via DF and doing for each def /* Check if DEF_INSN is before INSN. */ rtx_insn *next; for (next = NEXT_INSN (def_insn); next != nullptr && next != end && next != insn; next = NEXT_INSN (next)) ; is ending up with quadraticness.