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
This commit is contained in:
Richard Biener 2019-05-02 14:08:08 +00:00 committed by Richard Biener
parent 420ee75d7d
commit 8964432ad6
5 changed files with 27 additions and 1 deletions

View File

@ -1,3 +1,10 @@
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

View File

@ -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);

View File

@ -1,3 +1,8 @@
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

View File

@ -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" } }

View File

@ -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 */
};