diff options
author | Richard Biener <rguenther@suse.de> | 2019-05-02 14:08:08 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2019-05-02 14:08:08 +0000 |
commit | 8964432ad6f17cef74aa97c367d2975ba9458f92 (patch) | |
tree | 172994fc163031c61f48b2a00664c4de0866fd0c /gcc | |
parent | 420ee75d7dbdba35878d7feabea7d30d77b82943 (diff) | |
download | gcc-8964432ad6f17cef74aa97c367d2975ba9458f92.zip gcc-8964432ad6f17cef74aa97c367d2975ba9458f92.tar.gz gcc-8964432ad6f17cef74aa97c367d2975ba9458f92.tar.bz2 |
re PR tree-optimization/89653 (Missing vectorization of loop containing std::min/std::max and temporary)
2019-05-02 Richard Biener <rguenther@suse.de>
PR tree-optimization/89653
* tree-ssa-loop.c (pass_data_tree_loop_init): Execute
update-address-taken before the pass.
* passes.def (pass_tree_loop_init): Put comment before it.
* g++.dg/vect/pr89653.cc: New testcase.
From-SVN: r270800
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/passes.def | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/vect/pr89653.cc | 12 | ||||
-rw-r--r-- | gcc/tree-ssa-loop.c | 2 |
5 files changed, 27 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f4f0c14..9149eaa 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ 2019-05-02 Richard Biener <rguenther@suse.de> + PR tree-optimization/89653 + * tree-ssa-loop.c (pass_data_tree_loop_init): Execute + update-address-taken before the pass. + * passes.def (pass_tree_loop_init): Put comment before it. + +2019-05-02 Richard Biener <rguenther@suse.de> + PR tree-optimization/89509 * tree-ssa-structalias.c (compute_dependence_clique): Look at the first subvar when determining whether it is restrict. diff --git a/gcc/passes.def b/gcc/passes.def index 99640d5..ad2efab 100644 --- a/gcc/passes.def +++ b/gcc/passes.def @@ -255,6 +255,8 @@ along with GCC; see the file COPYING3. If not see NEXT_PASS (pass_fix_loops); NEXT_PASS (pass_tree_loop); PUSH_INSERT_PASSES_WITHIN (pass_tree_loop) + /* Before loop_init we rewrite no longer addressed locals into SSA + form if possible. */ NEXT_PASS (pass_tree_loop_init); NEXT_PASS (pass_tree_unswitch); NEXT_PASS (pass_scev_cprop); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3976e36..bf32f0e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2019-05-02 Richard Biener <rguenther@suse.de> + PR tree-optimization/89653 + * g++.dg/vect/pr89653.cc: New testcase. + +2019-05-02 Richard Biener <rguenther@suse.de> + PR tree-optimization/89509 * gcc.dg/torture/restrict-8.c: New testcase. diff --git a/gcc/testsuite/g++.dg/vect/pr89653.cc b/gcc/testsuite/g++.dg/vect/pr89653.cc new file mode 100644 index 0000000..d38b49a --- /dev/null +++ b/gcc/testsuite/g++.dg/vect/pr89653.cc @@ -0,0 +1,12 @@ +// { dg-do compile } +// { dg-require-effective-target vect_double } + +#include <algorithm> + +void loop1(double * const __restrict__ vec, double x, int end) +{ + for (int i = 0; i < end; ++i) + vec[i] = std::min(vec[i], vec[i]/x); +} + +// { dg-final { scan-tree-dump "vectorized 1 loops" "vect" } } diff --git a/gcc/tree-ssa-loop.c b/gcc/tree-ssa-loop.c index 00a0950..1ac6cee 100644 --- a/gcc/tree-ssa-loop.c +++ b/gcc/tree-ssa-loop.c @@ -330,7 +330,7 @@ const pass_data pass_data_tree_loop_init = PROP_cfg, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ - 0, /* todo_flags_start */ + TODO_update_address_taken, /* todo_flags_start */ 0, /* todo_flags_finish */ }; |