re PR tree-optimization/68961 (Test case gcc.target/powerpc/pr60203.c fails since r231674)

2016-01-15  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/68961
	* tree-vect-slp.c (vect_analyze_slp_cost_1): Consider cost
	of invariants in stores again.

	* gcc.dg/vect/costmodel/x86_64/costmodel-pr68961.c: New testcase.

From-SVN: r232415
This commit is contained in:
Richard Biener 2016-01-15 11:49:43 +00:00 committed by Richard Biener
parent 94619ed95b
commit 89483f9984
4 changed files with 35 additions and 7 deletions

View File

@ -1,3 +1,9 @@
2016-01-15 Richard Biener <rguenther@suse.de>
PR tree-optimization/68961
* tree-vect-slp.c (vect_analyze_slp_cost_1): Consider cost
of invariants in stores again.
2016-01-15 Sebastian Huber <sebastian.huber@embedded-brains.de>
* config/arm/t-rtems: Add cortex-m7/fpv5-d16 multilib.

View File

@ -1,3 +1,8 @@
2016-01-15 Richard Biener <rguenther@suse.de>
PR tree-optimization/68961
* gcc.dg/vect/costmodel/x86_64/costmodel-pr68961.c: New testcase.
2016-01-15 Ilya Enkovich <enkovich.gnu@gmail.com>
* gcc.target/i386/pr65105-5.c: New test.

View File

@ -0,0 +1,15 @@
/* { dg-do compile } */
/* { dg-additional-options "-fdump-tree-slp-details" } */
struct x { double d[2]; };
struct x
pack (double a, double aa)
{
struct x u;
u.d[0] = a;
u.d[1] = aa;
return u;
}
/* { dg-final { scan-tree-dump-times "vectorization is not profitable" 1 "slp2" } } */

View File

@ -1453,18 +1453,20 @@ vect_analyze_slp_cost_1 (slp_instance instance, slp_tree node,
/* Record the cost for the vector loads. */
vect_model_load_cost (stmt_info, ncopies_for_cost, false,
node, prologue_cost_vec, body_cost_vec);
return;
}
return;
}
record_stmt_cost (body_cost_vec, ncopies_for_cost, vector_stmt,
stmt_info, 0, vect_body);
if (SLP_TREE_TWO_OPERATORS (node))
else
{
record_stmt_cost (body_cost_vec, ncopies_for_cost, vector_stmt,
stmt_info, 0, vect_body);
record_stmt_cost (body_cost_vec, ncopies_for_cost, vec_perm,
stmt_info, 0, vect_body);
if (SLP_TREE_TWO_OPERATORS (node))
{
record_stmt_cost (body_cost_vec, ncopies_for_cost, vector_stmt,
stmt_info, 0, vect_body);
record_stmt_cost (body_cost_vec, ncopies_for_cost, vec_perm,
stmt_info, 0, vect_body);
}
}
/* Push SLP node def-type to stmts. */