diff options
author | Richard Biener <rguenther@suse.de> | 2016-11-07 08:06:08 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2016-11-07 08:06:08 +0000 |
commit | 29afecdf1b14136640f1d88da0e10751dbc6283c (patch) | |
tree | e8cf074ca42c483bdddbc561af7283cbc762e5fd /gcc/tree-vect-stmts.c | |
parent | a0d3edf8a54e30d48f61eb59a0be33c7ed2b971f (diff) | |
download | gcc-29afecdf1b14136640f1d88da0e10751dbc6283c.zip gcc-29afecdf1b14136640f1d88da0e10751dbc6283c.tar.gz gcc-29afecdf1b14136640f1d88da0e10751dbc6283c.tar.bz2 |
re PR middle-end/37150 (basic-block vectorization misses some unrolled loops)
2016-11-07 Richard Biener <rguenther@suse.de>
PR tree-optimization/37150
* tree-vectorizer.h (vect_transform_slp_perm_load): Add n_perms
parameter.
* tree-vect-slp.c (vect_supported_load_permutation_p): Adjust.
(vect_analyze_slp_cost_1): Account for the real number of
permutations emitted and for dead loads.
(vect_transform_slp_perm_load): Add n_perms parameter counting
the number of emitted permutations.
* tree-vect-stmts.c (vectorizable_load): Adjust.
From-SVN: r241893
Diffstat (limited to 'gcc/tree-vect-stmts.c')
-rw-r--r-- | gcc/tree-vect-stmts.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index 1d17156..ab01def 100644 --- a/gcc/tree-vect-stmts.c +++ b/gcc/tree-vect-stmts.c @@ -6978,8 +6978,11 @@ vectorizable_load (gimple *stmt, gimple_stmt_iterator *gsi, gimple **vec_stmt, } } if (slp_perm) - vect_transform_slp_perm_load (slp_node, dr_chain, gsi, vf, - slp_node_instance, false); + { + unsigned n_perms; + vect_transform_slp_perm_load (slp_node, dr_chain, gsi, vf, + slp_node_instance, false, &n_perms); + } return true; } @@ -7497,8 +7500,10 @@ vectorizable_load (gimple *stmt, gimple_stmt_iterator *gsi, gimple **vec_stmt, if (slp_perm) { + unsigned n_perms; if (!vect_transform_slp_perm_load (slp_node, dr_chain, gsi, vf, - slp_node_instance, false)) + slp_node_instance, false, + &n_perms)) { dr_chain.release (); return false; |