re PR tree-optimization/89653 (Missing vectorization of loop containing std::min...
authorRichard Biener <rguenther@suse.de>
Thu, 2 May 2019 14:08:08 +0000 (14:08 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Thu, 2 May 2019 14:08:08 +0000 (14:08 +0000)
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

gcc/ChangeLog
gcc/passes.def
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/vect/pr89653.cc [new file with mode: 0644]
gcc/tree-ssa-loop.c

index f4f0c14ca2532198e519e3ab3355611908b76465..9149eaad186f583dec670108ce2bf96079ccc5c5 100644 (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
index 99640d500911b38ebc6666493856129d2fba432b..ad2efabd3853d8d20562f66f4c5bb34694ec80f2 100644 (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);
index 3976e36ad4bace894e0f361f09ea06b90b59d0d2..bf32f0e756a5dee12dc47dfa0792c9a01744a7d0 100644 (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
diff --git a/gcc/testsuite/g++.dg/vect/pr89653.cc b/gcc/testsuite/g++.dg/vect/pr89653.cc
new file mode 100644 (file)
index 0000000..d38b49a
--- /dev/null
@@ -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" } }
index 00a095088365247b37cae0ef309c0cc2b7b1f235..1ac6cee60b0eafcf5af09ad37ea3a7c9a5cb5cca 100644 (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 */
 };