From a8d25fd0dd7e0feffc395ff1db1f2e9d815fb78a Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Mon, 6 Mar 2017 13:58:57 +0000 Subject: [PATCH] re PR tree-optimization/79887 (ICE in set_uid_loop_bbs, at tree-vectorizer.c:482) 2017-03-06 Richard Biener PR tree-optimization/79894 * tree-vectorizer.c (vectorize_loops): Set loop_vectorized_call to NULL after folding it. * gcc.dg/vect/pr79887.c: New testcase. From-SVN: r245923 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/vect/pr79887.c | 14 ++++++++++++++ gcc/tree-vectorizer.c | 2 ++ 4 files changed, 27 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/vect/pr79887.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7c732a1dc77..d9fc372641d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2017-03-06 Richard Biener + + PR tree-optimization/79894 + * tree-vectorizer.c (vectorize_loops): Set loop_vectorized_call + to NULL after folding it. + 2017-03-06 Richard Biener PR tree-optimization/79824 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 51432932bfe..35eb8183e43 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-03-06 Richard Biener + + PR tree-optimization/79894 + * gcc.dg/vect/pr79887.c: New testcase. + 2017-03-06 Richard Biener PR tree-optimization/79824 diff --git a/gcc/testsuite/gcc.dg/vect/pr79887.c b/gcc/testsuite/gcc.dg/vect/pr79887.c new file mode 100644 index 00000000000..4a7d1b05b65 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/pr79887.c @@ -0,0 +1,14 @@ +/* Test for pr79887. */ +/* { dg-do compile } */ +/* { dg-require-effective-target vect_condition } */ +/* { dg-additional-options "-fno-trapping-math --param vect-epilogues-nomask=1" } */ +/* { dg-additional-options "-mavx512ifma" { target x86_64-*-* i?86-*-* } } */ + +void +foo (float a[32], float b[2][32]) +{ + int i; + for (i = 0; i < 32; i++) + a[i] = (b[0][i] > b[1][i]) ? b[0][i] : b[1][i]; +} + diff --git a/gcc/tree-vectorizer.c b/gcc/tree-vectorizer.c index a4cead78793..f928dec3d96 100644 --- a/gcc/tree-vectorizer.c +++ b/gcc/tree-vectorizer.c @@ -651,6 +651,7 @@ vectorize_loops (void) "basic block vectorized\n"); fold_loop_vectorized_call (loop_vectorized_call, boolean_true_node); + loop_vectorized_call = NULL; ret |= TODO_cleanup_cfg; } } @@ -703,6 +704,7 @@ vectorize_loops (void) if (loop_vectorized_call) { fold_loop_vectorized_call (loop_vectorized_call, boolean_true_node); + loop_vectorized_call = NULL; ret |= TODO_cleanup_cfg; } -- 2.30.2