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 f4f0c14..9149eaa 100644 (file)
@@ -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.
index 99640d5..ad2efab 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 3976e36..bf32f0e 100644 (file)
@@ -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 (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 00a0950..1ac6cee 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 */
 };