https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88705
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2019-01-05 Ever confirmed|0 |1 --- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> --- _5 = BIT_FIELD_REF <v1_1(D), 32, 0>; _6 = BIT_FIELD_REF <v2_2(D), 32, 0>; _7 = _5 * _6; Here is a shorter testcase for one of the issues: typedef float f32x4 __attribute__((vector_size(16))); typedef double f64x2 __attribute__((vector_size(16))); float f(f32x4 v1, f32x4 v2) { return v1[0] * v2[0]; } double d(f64x2 v1, f64x2 v2) { return v1[0] * v2[0]; } ----- CUT ---- This is the extraction issue. There is a generation issue too: typedef float f32x4 __attribute__((vector_size(16))); typedef double f64x2 __attribute__((vector_size(16))); f32x4 f1(float a, float b, float c, float d) { return (f32x4){a,b,c,d}; } f64x2 d1(float a, float b) { return (f64x2){a,b}; } ---- CUT ---- I think they both should be filed seperately too and make this depdent on those two issues.