+2011-03-04 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/47968
+ * expmed.c (extract_bit_field_1): Prefer vector modes that
+ vec_extract patterns can handle.
+
2011-03-04 Richard Guenther <rguenther@suse.de>
PR middle-end/47975
&& GET_MODE_INNER (GET_MODE (op0)) != tmode)
{
enum machine_mode new_mode;
- int nunits = GET_MODE_NUNITS (GET_MODE (op0));
if (GET_MODE_CLASS (tmode) == MODE_FLOAT)
new_mode = MIN_MODE_VECTOR_FLOAT;
new_mode = MIN_MODE_VECTOR_INT;
for (; new_mode != VOIDmode ; new_mode = GET_MODE_WIDER_MODE (new_mode))
- if (GET_MODE_NUNITS (new_mode) == nunits
- && GET_MODE_SIZE (new_mode) == GET_MODE_SIZE (GET_MODE (op0))
+ if (GET_MODE_SIZE (new_mode) == GET_MODE_SIZE (GET_MODE (op0))
&& targetm.vector_mode_supported_p (new_mode))
break;
if (new_mode != VOIDmode)
+2011-03-04 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/47968
+ * gcc.dg/torture/pr47968.c: New testcase.
+
2011-03-04 Richard Guenther <rguenther@suse.de>
PR middle-end/47975
--- /dev/null
+/* { dg-do compile } */
+
+typedef __attribute__ ((vector_size (16))) float float4;
+typedef __attribute__ ((vector_size (16))) double double2;
+
+float foo (double2 d2)
+{
+ float4 f4 = (float4) d2;
+ return *(float *) &f4;
+}
+