tree-ssa-sccvn.c (process_scc): Dump SCC here, when iterating,
authorRichard Biener <rguenther@suse.de>
Tue, 20 May 2014 13:54:06 +0000 (13:54 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Tue, 20 May 2014 13:54:06 +0000 (13:54 +0000)
2014-05-20  Richard Biener  <rguenther@suse.de>

* tree-ssa-sccvn.c (process_scc): Dump SCC here, when
iterating,
(extract_and_process_scc_for_name): not here.
(cond_dom_walker::before_dom_children): Only process
stmts that end the BB in interesting ways.
(run_scc_vn): Mark param uses as visited.

From-SVN: r210643

gcc/ChangeLog
gcc/tree-ssa-sccvn.c

index 58f93d122edafafecfb753e99941479c93ed61cb..f0aecbd07df4812fc1bf598384b669dca5c75fe0 100644 (file)
@@ -1,3 +1,12 @@
+2014-05-20  Richard Biener  <rguenther@suse.de>
+
+       * tree-ssa-sccvn.c (process_scc): Dump SCC here, when
+       iterating,
+       (extract_and_process_scc_for_name): not here.
+       (cond_dom_walker::before_dom_children): Only process
+       stmts that end the BB in interesting ways.
+       (run_scc_vn): Mark param uses as visited.
+
 2014-05-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
 
        * config/arm/arm.md (arith_shiftsi): Do not predicate for
index 73362f8bfa6b3a1d4e3eec27bf7369e97c695149..b45dc143833338e04bf42ff7337a9c68bd53dd1c 100644 (file)
@@ -3833,6 +3833,9 @@ process_scc (vec<tree> scc)
        }
     }
 
+  if (dump_file && (dump_flags & TDF_DETAILS))
+    print_scc (dump_file, scc);
+
   /* Iterate over the SCC with the optimistic table until it stops
      changing.  */
   current_info = optimistic_info;
@@ -3858,6 +3861,8 @@ process_scc (vec<tree> scc)
        changed |= visit_use (var);
     }
 
+  if (dump_file && (dump_flags & TDF_DETAILS))
+    fprintf (dump_file, "Processing SCC needed %d iterations\n", iterations);
   statistics_histogram_event (cfun, "SCC iterations", iterations);
 
   /* Finally, copy the contents of the no longer used optimistic
@@ -3909,9 +3914,6 @@ extract_and_process_scc_for_name (tree name)
   if (scc.length () > 1)
     sort_scc (scc);
 
-  if (dump_file && (dump_flags & TDF_DETAILS))
-    print_scc (dump_file, scc);
-
   process_scc (scc);
 
   return true;
@@ -4221,6 +4223,19 @@ cond_dom_walker::before_dom_children (basic_block bb)
   if (!stmt)
     return;
 
+  enum gimple_code code = gimple_code (stmt);
+  if (code != GIMPLE_COND
+      && code != GIMPLE_SWITCH
+      && code != GIMPLE_GOTO)
+    return;
+
+  if (dump_file && (dump_flags & TDF_DETAILS))
+    {
+      fprintf (dump_file, "Value-numbering operands of stmt ending BB %d: ",
+              bb->index);
+      print_gimple_stmt (dump_file, stmt, 0, 0);
+    }
+
   /* Value-number the last stmts SSA uses.  */
   ssa_op_iter i;
   tree op;
@@ -4236,7 +4251,7 @@ cond_dom_walker::before_dom_children (basic_block bb)
      if value-numbering can prove they are not reachable.  Handling
      computed gotos is also possible.  */
   tree val;
-  switch (gimple_code (stmt))
+  switch (code)
     {
     case GIMPLE_COND:
       {
@@ -4259,8 +4274,7 @@ cond_dom_walker::before_dom_children (basic_block bb)
       val = gimple_goto_dest (stmt);
       break;
     default:
-      val = NULL_TREE;
-      break;
+      gcc_unreachable ();
     }
   if (!val)
     return;
@@ -4300,7 +4314,10 @@ run_scc_vn (vn_lookup_kind default_vn_walk_kind_)
     {
       tree def = ssa_default_def (cfun, param);
       if (def)
-       VN_INFO (def)->valnum = def;
+       {
+         VN_INFO (def)->visited = true;
+         VN_INFO (def)->valnum = def;
+       }
     }
 
   /* Mark all edges as possibly executable.  */