https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81633
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- In *.ifcvt dump we have _69 = identity[j_31][0]; _71 = _69 * _69; tmp[j_31][0] = _71; _77 = identity[j_31][1]; _78 = _69 * _77; tmp[j_31][1] = _78; _84 = identity[j_31][2]; _85 = _69 * _84; tmp[j_31][2] = _85; _91 = identity[j_31][3]; _92 = _69 * _91; tmp[j_31][3] = _92; but the fact that the first stmt is _69 * _69 doesn't mean the whole SLP is a square of another vector.