/* { dg-do compile } */ /* { dg-require-effective-target vect_double } */ double foo (int x, double *p) { double res = p[0] + p[1]; double tem = p[0] / x; if (x) { p[0] = tem; p[1] /= x; } return res + tem; } /* We may not SLP vectorize the FP division because it can trap and it is distributed between two basic-blocks. */ /* { dg-final { scan-tree-dump "Build SLP failed: different BB for PHI or possibly trapping operation in _\[0-9\]+ = _\[0-9\]+ / _\[0-9\]+;" "slp2" } } */