2013-03-18 Richard Biener <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 18 Mar 2013 08:50:35 +0000 (08:50 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 18 Mar 2013 08:50:35 +0000 (08:50 +0000)
* tree-ssa-loop-manip.c (find_uses_to_rename): Do not scan the
whole function when there is nothing to do.
* tree-ssa-loop.c (pass_vectorize): Remove TODO_update_ssa.
* tree-vectorizer.c (vectorize_loops): Update virtual and
loop-closed SSA once.
* tree-vect-loop.c (vect_transform_loop): Do not update SSA here.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@196770 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/tree-ssa-loop-manip.c
gcc/tree-ssa-loop.c
gcc/tree-vect-loop.c
gcc/tree-vectorizer.c

index 631ee72..f5d00c6 100644 (file)
@@ -1,5 +1,14 @@
 2013-03-18  Richard Biener  <rguenther@suse.de>
 
+       * tree-ssa-loop-manip.c (find_uses_to_rename): Do not scan the
+       whole function when there is nothing to do.
+       * tree-ssa-loop.c (pass_vectorize): Remove TODO_update_ssa.
+       * tree-vectorizer.c (vectorize_loops): Update virtual and
+       loop-closed SSA once.
+       * tree-vect-loop.c (vect_transform_loop): Do not update SSA here.
+
+2013-03-18  Richard Biener  <rguenther@suse.de>
+
        PR middle-end/56113
        * domwalk.c (bb_postorder): New global static.
        (cmp_bb_postorder): New function.
index 4645588..a0516c4 100644 (file)
@@ -443,21 +443,12 @@ find_uses_to_rename (bitmap changed_bbs, bitmap *use_blocks, bitmap need_phis)
   unsigned index;
   bitmap_iterator bi;
 
-  /* ??? If CHANGED_BBS is empty we rewrite the whole function -- why?  */
-  if (changed_bbs && !bitmap_empty_p (changed_bbs))
-    {
-      EXECUTE_IF_SET_IN_BITMAP (changed_bbs, 0, index, bi)
-       {
-         find_uses_to_rename_bb (BASIC_BLOCK (index), use_blocks, need_phis);
-       }
-    }
+  if (changed_bbs)
+    EXECUTE_IF_SET_IN_BITMAP (changed_bbs, 0, index, bi)
+      find_uses_to_rename_bb (BASIC_BLOCK (index), use_blocks, need_phis);
   else
-    {
-      FOR_EACH_BB (bb)
-       {
-         find_uses_to_rename_bb (bb, use_blocks, need_phis);
-       }
-    }
+    FOR_EACH_BB (bb)
+      find_uses_to_rename_bb (bb, use_blocks, need_phis);
 }
 
 /* Rewrites the program into a loop closed ssa form -- i.e. inserts extra
index edc04ea..fdfb9e7 100644 (file)
@@ -245,8 +245,7 @@ struct gimple_opt_pass pass_vectorize =
   0,                                    /* properties_provided */
   0,                                    /* properties_destroyed */
   0,                                   /* todo_flags_start */
-  TODO_update_ssa
-    | TODO_ggc_collect                 /* todo_flags_finish */
+  TODO_ggc_collect                     /* todo_flags_finish */
  }
 };
 
index 1252c5a..b7c5521 100644 (file)
@@ -5773,11 +5773,6 @@ vect_transform_loop (loop_vec_info loop_vinfo)
         loop->nb_iterations_estimate = loop->nb_iterations_estimate - double_int_one;
     }
 
-  /* The memory tags and pointers in vectorized statements need to
-     have their SSA forms updated.  FIXME, why can't this be delayed
-     until all the loops have been transformed?  */
-  update_ssa (TODO_update_ssa);
-
   if (dump_enabled_p ())
     dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, vect_location, "LOOP VECTORIZED.");
   if (loop->inner && dump_enabled_p ())
index 42ebb8d..9d46199 100644 (file)
@@ -149,7 +149,16 @@ vectorize_loops (void)
 
   free_stmt_vec_info_vec ();
 
-  return num_vectorized_loops > 0 ? TODO_cleanup_cfg : 0;
+  if (num_vectorized_loops > 0)
+    {
+      /* If we vectorized any loop only virtual SSA form needs to be updated.
+        ???  Also while we try hard to update loop-closed SSA form we fail
+        to properly do this in some corner-cases (see PR56286).  */
+      rewrite_into_loop_closed_ssa (NULL, TODO_update_ssa_only_virtuals);
+      return TODO_cleanup_cfg;
+    }
+
+  return 0;
 }