diff options
author | Jakub Jelinek <jakub@redhat.com> | 2019-07-04 09:25:28 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2019-07-04 09:25:28 +0200 |
commit | 6f01ad76c11eacc9f32539f769e4cb3fd169466a (patch) | |
tree | c8b90243d826081d07f54eb5c96e4454122b6cfb | |
parent | 75da268e1a563a1a52389cd2ecee12d07c45a655 (diff) | |
download | gcc-6f01ad76c11eacc9f32539f769e4cb3fd169466a.zip gcc-6f01ad76c11eacc9f32539f769e4cb3fd169466a.tar.gz gcc-6f01ad76c11eacc9f32539f769e4cb3fd169466a.tar.bz2 |
re PR tree-optimization/91063 (ICE in set_vinfo_for_stmt, at tree-vectorizer.c:676)
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.
* gcc.dg/gomp/pr91063.c: New test.
From-SVN: r273041
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/gomp/pr91063.c | 17 | ||||
-rw-r--r-- | gcc/tree-vect-stmts.c | 10 |
4 files changed, 36 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 624cf76..99a653c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +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 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5bcd7fb..9021bd7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +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 diff --git a/gcc/testsuite/gcc.dg/gomp/pr91063.c b/gcc/testsuite/gcc.dg/gomp/pr91063.c new file mode 100644 index 0000000..32938f3 --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/pr91063.c @@ -0,0 +1,17 @@ +/* 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; +} diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index 313b1b9..ead079d 100644 --- a/gcc/tree-vect-stmts.c +++ b/gcc/tree-vect-stmts.c @@ -1496,15 +1496,19 @@ vect_init_vector (stmt_vec_info stmt_info, tree val, tree type, 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; } |