diff options
author | Richard Biener <rguenther@suse.de> | 2019-03-11 11:31:05 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2019-03-11 11:31:05 +0000 |
commit | 03001a351528a1fc35bfe0c70deb08c7e18d314b (patch) | |
tree | 90fc178fad908f8f6703bbedbd2e87c07aea6358 /gcc/tree-vect-loop-manip.c | |
parent | 470fa18b8d54594b339dafbd77ece4b05b4f00c3 (diff) | |
download | gcc-03001a351528a1fc35bfe0c70deb08c7e18d314b.zip gcc-03001a351528a1fc35bfe0c70deb08c7e18d314b.tar.gz gcc-03001a351528a1fc35bfe0c70deb08c7e18d314b.tar.bz2 |
re PR tree-optimization/89649 (r269458 FAILs g++.dg/pr80481.C, scan-assembler-not vmovaps)
2019-03-11 Richard Biener <rguenther@suse.de>
PR tree-optimization/89649
* tree-vectorizer.h (vect_loop_versioning): Adjust prototype.
* tree-vect-loop-manip.c (vect_do_peeling): Unset force_vectorize
on the prolog and epilog loops.
(vect_loop_versioning): Return copy of loop.
* tree-vect-loop.c (vect_transform_loop): Unset force_vectorize
on the non-vectorized version of the loop.
From-SVN: r269578
Diffstat (limited to 'gcc/tree-vect-loop-manip.c')
-rw-r--r-- | gcc/tree-vect-loop-manip.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/tree-vect-loop-manip.c b/gcc/tree-vect-loop-manip.c index 58d1850..77d3dac 100644 --- a/gcc/tree-vect-loop-manip.c +++ b/gcc/tree-vect-loop-manip.c @@ -2542,6 +2542,7 @@ vect_do_peeling (loop_vec_info loop_vinfo, tree niters, tree nitersm1, "slpeel_tree_duplicate_loop_to_edge_cfg failed.\n"); gcc_unreachable (); } + prolog->force_vectorize = false; slpeel_update_phi_nodes_for_loops (loop_vinfo, prolog, loop, true); first_loop = prolog; reset_original_copy_tables (); @@ -2612,6 +2613,7 @@ vect_do_peeling (loop_vec_info loop_vinfo, tree niters, tree nitersm1, "slpeel_tree_duplicate_loop_to_edge_cfg failed.\n"); gcc_unreachable (); } + epilog->force_vectorize = false; slpeel_update_phi_nodes_for_loops (loop_vinfo, loop, epilog, false); /* Scalar version loop may be preferred. In this case, add guard @@ -2984,7 +2986,7 @@ vect_create_cond_for_alias_checks (loop_vec_info loop_vinfo, tree * cond_expr) The versioning precondition(s) are placed in *COND_EXPR and *COND_EXPR_STMT_LIST. */ -void +struct loop * vect_loop_versioning (loop_vec_info loop_vinfo, unsigned int th, bool check_profitability, poly_uint64 versioning_threshold) @@ -3154,4 +3156,6 @@ vect_loop_versioning (loop_vec_info loop_vinfo, GSI_SAME_STMT); } update_ssa (TODO_update_ssa); + + return nloop; } |