From: Yuri Rumyantsev Date: Thu, 8 Oct 2015 14:28:53 +0000 (+0000) Subject: tree-vect-loop.c (vect_analyze_loop_operations): Skip virtual phi in the tail of... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=25a2c75d49ab2bebbae48b3640c999c43c8375bf;p=gcc.git tree-vect-loop.c (vect_analyze_loop_operations): Skip virtual phi in the tail of outer-loop. gcc/ * tree-vect-loop.c (vect_analyze_loop_operations): Skip virtual phi in the tail of outer-loop. gcc/testsuite/ * gcc.dg/vect/vect-outer-simd-3.c: New test. From-SVN: r228601 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b872a4d5edd..7ae4f39fb7d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2015-10-08 Yuri Rumyantsev + + * tree-vect-loop.c (vect_analyze_loop_operations): Skip virtual phi + in the tail of outer-loop. + 2015-10-08 David Edelsohn * config/rs6000/rs6000.c (rs6000_xcoff_debug_unwind_info): Always diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ef2faab16a1..638751eaf93 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2015-10-08 Yuri Rumyantsev + + * gcc.dg/vect/vect-outer-simd-3.c: New test. + 2015-10-08 Yuri Rumyantsev * gcc.dg/loop-unswitch-2.c: New test. diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-simd-3.c b/gcc/testsuite/gcc.dg/vect/vect-outer-simd-3.c new file mode 100644 index 00000000000..59e54db0752 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/vect-outer-simd-3.c @@ -0,0 +1,78 @@ +/* { dg-require-effective-target vect_simd_clones } */ +/* { dg-additional-options "-O3 -fopenmp-simd -ffast-math" } */ +#include +#include "tree-vect.h" +#define N 64 + +float *px, *py; +float *tx, *ty; +float *x1, *z1, *t1, *t2; +int bound[N]; + +static void inline bar(const float cx, float cy, + float *vx, float *vy, int n) +{ + int j; + for (j = 0; j < n; ++j) + { + const float dx = cx - px[j]; + const float dy = cy - py[j]; + *vx -= dx * tx[j]; + *vy -= dy * ty[j]; + } +} + +__attribute__((noinline, noclone)) void foo1 () +{ + int i; + int n = bound[63]; +#pragma omp simd + for (i=0; i