2019-10-21 Jakub Jelinek <jakub@redhat.com>
Backported from mainline
+ 2019-09-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/91723
+ * tree-vect-stmts.c (vectorizable_call): Use types_compatible_p check
+ instead of pointer equality when checking if argument vectypes are
+ the same.
+
2019-09-07 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/91665
2019-10-21 Jakub Jelinek <jakub@redhat.com>
Backported from mainline
+ 2019-09-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/91723
+ * gcc.dg/vect/vect-fma-3.c: New test.
+
2019-09-07 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/91665
--- /dev/null
+/* PR tree-optimization/91723 */
+/* { dg-do compile { target { scalar_all_fma || { i?86-*-* x86_64-*-* } } } } */
+/* { dg-additional-options "-mfma" { target { i?86-*-* x86_64-*-* } } } */
+
+void
+foo (double *restrict r, const double *restrict a,
+ const double *restrict b, const double *restrict c)
+{
+ for (int i = 0; i < 1024; i++)
+ {
+ double x = __builtin_fma (a[i], b[i], c[i]);
+ x = __builtin_fma (a[i], b[i], x);
+ r[i] = x;
+ }
+}
+
+/* { dg-final { scan-tree-dump-times "LOOP VECTORIZED" 1 "vect" { target vect_double } } } */
if (!vectype_in)
vectype_in = vectypes[i];
else if (vectypes[i]
- && vectypes[i] != vectype_in)
+ && !types_compatible_p (vectypes[i], vectype_in))
{
if (dump_enabled_p ())
dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,