re PR tree-optimization/72517 (436.cactusADM: More than 40% regression in O3 and...
authorRichard Biener <rguenther@suse.de>
Tue, 26 Jul 2016 14:07:05 +0000 (14:07 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Tue, 26 Jul 2016 14:07:05 +0000 (14:07 +0000)
2016-07-26  Richard Biener  <rguenther@suse.de>

PR middle-end/72517
* expmed.c (extract_bit_field_1): Constrain the vector mode
with element size matching the extraction mode size when
choosing a better vector mode to do the extraction from.

From-SVN: r238756

gcc/ChangeLog
gcc/expmed.c

index bbc7e298d4a32c729ac54dc17399ae5053382ff5..dff649d567981c6ea25a03029580e00e16dcdbff 100644 (file)
@@ -1,3 +1,10 @@
+2016-07-26  Richard Biener  <rguenther@suse.de>
+
+       PR middle-end/72517
+       * expmed.c (extract_bit_field_1): Constrain the vector mode
+       with element size matching the extraction mode size when
+       choosing a better vector mode to do the extraction from.
+
 2016-07-26  Richard Biener  <rguenther@suse.de>
            Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
 
index f776e54809e10d6233107a64b67dfedb6d1026d5..7af0c612200c69aadf53088c1c8309c1cb0f1623 100644 (file)
@@ -1581,6 +1581,7 @@ extract_bit_field_1 (rtx str_rtx, unsigned HOST_WIDE_INT bitsize,
 
       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)