https://gcc.gnu.org/bugzilla/show_bug.cgi?id=30187
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Here is the interesting thing: #define vector __attribute__((vector_size(16))) float f(vector float t, int i) { vector int tt = {i, i, i, i}; vector float r = __builtin_shuffle(t, tt); return r[0]; } ---- CUT --- produces: _7 = i_2(D) & 3; vectmp.4 = t_4(D); _8 = VIEW_CONVERT_EXPR<float[4]>(vectmp.4)[_7]; return _8;