On Fri, 27 Apr 2018, Richard Biener wrote:

> 
> This makes us not record all stmts in the visited_stmts hash-set
> but only those that are possibly valid EH stmts.  Should save us
> some cycles here.
> 
> Bootstrap running on x86_64-unknown-linux-gnu.

This is what i have applied.

Richard.

2018-04-28  Richard Biener  <rguent...@suse.de>

        * tree-cfg.c (verify_gimple_phi): Take a gphi * argument.
        (verify_gimple_in_cfg): Rename visited_stmts to visited_throwing_stmts
        to reflect use.  Only add interesting stmts.

Index: gcc/tree-cfg.c
===================================================================
--- gcc/tree-cfg.c      (revision 259703)
+++ gcc/tree-cfg.c      (working copy)
@@ -5103,7 +5103,7 @@ verify_gimple_stmt (gimple *stmt)
    and false otherwise.  */
 
 static bool
-verify_gimple_phi (gimple *phi)
+verify_gimple_phi (gphi *phi)
 {
   bool err = false;
   unsigned i;
@@ -5422,7 +5422,7 @@ verify_gimple_in_cfg (struct function *f
 
   timevar_push (TV_TREE_STMT_VERIFY);
   hash_set<void *> visited;
-  hash_set<gimple *> visited_stmts;
+  hash_set<gimple *> visited_throwing_stmts;
 
   /* Collect all BLOCKs referenced by the BLOCK tree of FN.  */
   hash_set<tree> blocks;
@@ -5444,8 +5444,6 @@ verify_gimple_in_cfg (struct function *f
          bool err2 = false;
          unsigned i;
 
-         visited_stmts.add (phi);
-
          if (gimple_bb (phi) != bb)
            {
              error ("gimple_bb (phi) is set to a wrong basic block");
@@ -5501,8 +5499,6 @@ verify_gimple_in_cfg (struct function *f
          tree addr;
          int lp_nr;
 
-         visited_stmts.add (stmt);
-
          if (gimple_bb (stmt) != bb)
            {
              error ("gimple_bb (stmt) is set to a wrong basic block");
@@ -5552,6 +5548,8 @@ verify_gimple_in_cfg (struct function *f
             that they cannot throw, that we update other data structures
             to match.  */
          lp_nr = lookup_stmt_eh_lp (stmt);
+         if (lp_nr != 0)
+           visited_throwing_stmts.add (stmt);
          if (lp_nr > 0)
            {
              if (!stmt_could_throw_p (stmt))
@@ -5575,11 +5573,11 @@ verify_gimple_in_cfg (struct function *f
        }
     }
 
-  eh_error_found = false;
   hash_map<gimple *, int> *eh_table = get_eh_throw_stmt_table (cfun);
+  eh_error_found = false;
   if (eh_table)
     eh_table->traverse<hash_set<gimple *> *, verify_eh_throw_stmt_node>
-      (&visited_stmts);
+      (&visited_throwing_stmts);
 
   if (err || eh_error_found)
     internal_error ("verify_gimple failed");

Reply via email to