Since the addition of DCE after complex lowering, reassoc1 has no
longer been impeded by COMPLEX_EXPRs, so it changes (a - (b + c)),
where (b + c) is the imaginary part of an intermediate complex value,
to ((a - b) - c), and this prevents the vectorizer from recognizing
the expected COMPLEX_ADD_ROT270 pattern in fms_elemconjsnd.
Stop expecting that pattern to be found on that test.
for gcc/testsuite/ChangeLog
* gcc.dg/vect/complex/fast-math-complex-mls-half-float.c:
Don't expect COMPLEX_ADD_ROT270.
#define TYPE _Float16
#define N 200
#include "complex-mls-template.c"
-/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */
+/* COMPLEX_ADD_ROT270 is no longer recognized in fms_elemconjsnd.
+ The COMPLEX_EXPR that prevented reassoc from changing X - (Y + Z)
+ into (X + (-Y)) + (-Z) has been removed since the introduction of
+ DCE at the end of cplxlower1. */
+/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" { xfail *-*-* } } } */
/* { dg-final { scan-tree-dump "Found COMPLEX_FMS_CONJ" "vect" } } */
/* { dg-final { scan-tree-dump "Found COMPLEX_FMS" "vect" } } */