+2019-07-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/91063
+ * tree-vect-stmts.c (vect_init_vector): Call gsi_remove to remove
+ stmt from stmts sequence before calling vect_init_vector_1.
+ Formatting fix.
+
2019-07-04 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
PR target/88833
+2019-07-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/91063
+ * gcc.dg/gomp/pr91063.c: New test.
+
2019-07-04 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
PR target/88833
--- /dev/null
+/* PR tree-optimization/91063 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fopenmp-simd" } */
+/* { dg-additional-options "-mavx512f" { target { i?86-*-* x86_64-*-* } } } */
+
+struct S { void *s; };
+
+int
+foo (struct S *x)
+{
+ int r = 0;
+ int i;
+#pragma omp simd reduction (+ : r)
+ for (i = 0; i < 64; ++i)
+ r += (int) (x->s != 0);
+ return r;
+}
promotion of invariant/external defs. */
val = gimple_convert (&stmts, TREE_TYPE (type), val);
for (gimple_stmt_iterator gsi2 = gsi_start (stmts);
- !gsi_end_p (gsi2); gsi_next (&gsi2))
- vect_init_vector_1 (stmt_info, gsi_stmt (gsi2), gsi);
+ !gsi_end_p (gsi2); )
+ {
+ init_stmt = gsi_stmt (gsi2);
+ gsi_remove (&gsi2, false);
+ vect_init_vector_1 (stmt_info, init_stmt, gsi);
+ }
}
}
val = build_vector_from_val (type, val);
}
new_temp = vect_get_new_ssa_name (type, vect_simple_var, "cst_");
- init_stmt = gimple_build_assign (new_temp, val);
+ init_stmt = gimple_build_assign (new_temp, val);
vect_init_vector_1 (stmt_info, init_stmt, gsi);
return new_temp;
}