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.

Reply via email to