From: Richard Biener Date: Thu, 2 May 2019 14:08:08 +0000 (+0000) Subject: re PR tree-optimization/89653 (Missing vectorization of loop containing std::min... X-Git-Tag: upstream/12.2.0~24928 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8964432ad6f17cef74aa97c367d2975ba9458f92;p=platform%2Fupstream%2Fgcc.git re PR tree-optimization/89653 (Missing vectorization of loop containing std::min/std::max and temporary) 2019-05-02 Richard Biener 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 --- 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 + 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 + 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 + PR tree-optimization/89653 + * g++.dg/vect/pr89653.cc: New testcase. + +2019-05-02 Richard Biener + 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 + +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 */ };