Commit 2395a8ea by Jakub Jelinek Committed by Jakub Jelinek

re PR tree-optimization/66142 (Loop is not vectorized because not sufficient…

re PR tree-optimization/66142 (Loop is not vectorized because not sufficient support for GOMP_SIMD_LANE)

	PR tree-optimization/66142
	* tree-if-conv.c (if_convertible_phi_p): Don't give up on
	virtual phis that feed themselves.

	* gcc.dg/vect/pr66142.c: New test.

From-SVN: r223863
parent 52fc6859
2015-05-29 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/66142
* tree-if-conv.c (if_convertible_phi_p): Don't give up on
virtual phis that feed themselves.
2015-05-29 Richard Biener <rguenther@suse.de>
PR tree-optimization/66314
......
2015-05-29 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/66142
* gcc.dg/vect/pr66142.c: New test.
2015-05-29 Richard Biener <rguenther@suse.de>
PR tree-optimization/66314
......
/* PR middle-end/66142 */
/* { dg-do compile } */
/* { dg-additional-options "-ffast-math -fopenmp-simd" } */
/* { dg-additional-options "-mavx" { target avx_runtime } } */
struct A { float x, y; };
struct B { struct A t, w; };
static inline float
bar (const struct B *x)
{
struct A r;
float b, c, d;
r.x = x->t.x;
r.y = x->t.y;
b = r.x * x->w.x + r.y * x->w.y;
c = b + r.x * r.x + r.y * r.y;
if (c > 0.0f)
return c + 3.0f;
return 0.0f;
}
void
foo (float *a, float *b, float *c)
{
int i;
float z = 0.0f;
float u = *a;
#pragma omp simd
for (i = 0; i < 32; i++)
{
float x = b[i];
float y = c[i];
struct B r;
r.t.x = 1.0f;
r.t.y = u;
r.w.x = x;
r.w.y = y;
z += bar (&r);
}
*a = z;
}
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 1 "vect" { target vect_condition } } } */
......@@ -594,7 +594,8 @@ if_convertible_phi_p (struct loop *loop, basic_block bb, gphi *phi,
FOR_EACH_IMM_USE_FAST (use_p, imm_iter, gimple_phi_result (phi))
{
if (gimple_code (USE_STMT (use_p)) == GIMPLE_PHI)
if (gimple_code (USE_STMT (use_p)) == GIMPLE_PHI
&& USE_STMT (use_p) != (gimple) phi)
{
if (dump_file && (dump_flags & TDF_DETAILS))
fprintf (dump_file, "Difficult to handle this virtual phi.\n");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment