https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72517

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
Does

Index: gcc/expmed.c
===================================================================
--- gcc/expmed.c        (revision 238743)
+++ gcc/expmed.c        (working copy)
@@ -1581,6 +1581,7 @@ extract_bit_field_1 (rtx str_rtx, unsign

       for (; new_mode != VOIDmode ; new_mode = GET_MODE_WIDER_MODE (new_mode))
        if (GET_MODE_SIZE (new_mode) == GET_MODE_SIZE (GET_MODE (op0))
+           && GET_MODE_UNIT_SIZE (new_mode) == GET_MODE_SIZE (tmode)
            && targetm.vector_mode_supported_p (new_mode))
          break;
       if (new_mode != VOIDmode)

help?  The loop was obviously written when targets didn't support multiple
vector sizes.

Reply via email to