Iterator to visit SSA
authorKugan Vivekanandarajah <kuganv@linaro.org>
Thu, 15 Sep 2016 02:03:51 +0000 (02:03 +0000)
committerKugan Vivekanandarajah <kugan@gcc.gnu.org>
Thu, 15 Sep 2016 02:03:51 +0000 (02:03 +0000)
Iterator to visit SSA
gcc/ChangeLog:

2016-09-15  Kugan Vivekanandarajah  <kuganv@linaro.org>

* tree-ssanames.h (FOR_EACH_SSA_NAME): New.
* cfgexpand.c (update_alias_info_with_stack_vars): Use
FOR_EACH_SSA_NAME to iterate over SSA variables.
(pass_expand::execute): Likewise.
* omp-simd-clone.c (ipa_simd_modify_function_body): Likewise.
* tree-cfg.c (dump_function_to_file): Likewise.
* tree-into-ssa.c (pass_build_ssa::execute): Likewise.
(update_ssa): Likewise.
* tree-ssa-alias.c (dump_alias_info): Likewise.
* tree-ssa-ccp.c (ccp_finalize): Likewise.
* tree-ssa-coalesce.c (build_ssa_conflict_graph): Likewise.
(create_outofssa_var_map): Likewise.
(coalesce_ssa_name): Likewise.
* tree-ssa-operands.c (dump_immediate_uses): Likewise.
* tree-ssa-pre.c (compute_avail): Likewise.
* tree-ssa-sccvn.c (init_scc_vn): Likewise.
(scc_vn_restore_ssa_info): Likewise.
(free_scc_vn): Likwise.
(run_scc_vn): Likewise.
* tree-ssa-structalias.c (compute_points_to_sets): Likewise.
* tree-ssa-ter.c (new_temp_expr_table): Likewise.
* tree-ssa-copy.c (fini_copy_prop): Likewise.
* tree-ssa.c (verify_ssa): Likewise.

From-SVN: r240152

16 files changed:
gcc/ChangeLog
gcc/cfgexpand.c
gcc/omp-simd-clone.c
gcc/tree-cfg.c
gcc/tree-into-ssa.c
gcc/tree-ssa-alias.c
gcc/tree-ssa-ccp.c
gcc/tree-ssa-coalesce.c
gcc/tree-ssa-copy.c
gcc/tree-ssa-operands.c
gcc/tree-ssa-pre.c
gcc/tree-ssa-sccvn.c
gcc/tree-ssa-structalias.c
gcc/tree-ssa-ter.c
gcc/tree-ssa.c
gcc/tree-ssanames.h

index 9b39906212cc3ef342d423e8a1bfec633e1dc14b..45850766d71a4c53700ad56019ac33a7378a83b6 100644 (file)
@@ -1,3 +1,29 @@
+2016-09-15  Kugan Vivekanandarajah  <kuganv@linaro.org>
+
+       * tree-ssanames.h (FOR_EACH_SSA_NAME): New.
+       * cfgexpand.c (update_alias_info_with_stack_vars): Use
+       FOR_EACH_SSA_NAME to iterate over SSA variables.
+       (pass_expand::execute): Likewise.
+       * omp-simd-clone.c (ipa_simd_modify_function_body): Likewise.
+       * tree-cfg.c (dump_function_to_file): Likewise.
+       * tree-into-ssa.c (pass_build_ssa::execute): Likewise.
+       (update_ssa): Likewise.
+       * tree-ssa-alias.c (dump_alias_info): Likewise.
+       * tree-ssa-ccp.c (ccp_finalize): Likewise.
+       * tree-ssa-coalesce.c (build_ssa_conflict_graph): Likewise.
+       (create_outofssa_var_map): Likewise.
+       (coalesce_ssa_name): Likewise.
+       * tree-ssa-operands.c (dump_immediate_uses): Likewise.
+       * tree-ssa-pre.c (compute_avail): Likewise.
+       * tree-ssa-sccvn.c (init_scc_vn): Likewise.
+       (scc_vn_restore_ssa_info): Likewise.
+       (free_scc_vn): Likwise.
+       (run_scc_vn): Likewise.
+       * tree-ssa-structalias.c (compute_points_to_sets): Likewise.
+       * tree-ssa-ter.c (new_temp_expr_table): Likewise.
+       * tree-ssa-copy.c (fini_copy_prop): Likewise.
+       * tree-ssa.c (verify_ssa): Likewise.
+
 2016-09-14  Matthew Fortune  <matthew.fortune@imgtec.com>
 
        * config.gcc (mips*-mti-elf*, mips*-mti-linux*): Set mips32r2
index 130a16b1d7d06c4ec9e31439037ffcbcbd0e085f..dfa301de9cc1bad5ea97863a10d1fb714fe4039c 100644 (file)
@@ -815,16 +815,15 @@ update_alias_info_with_stack_vars (void)
   if (decls_to_partitions)
     {
       unsigned i;
+      tree name;
       hash_set<bitmap> visited;
       bitmap temp = BITMAP_ALLOC (&stack_var_bitmap_obstack);
 
-      for (i = 1; i < num_ssa_names; i++)
+      FOR_EACH_SSA_NAME (i, name, cfun)
        {
-         tree name = ssa_name (i);
          struct ptr_info_def *pi;
 
-         if (name
-             && POINTER_TYPE_P (TREE_TYPE (name))
+         if (POINTER_TYPE_P (TREE_TYPE (name))
              && ((pi = SSA_NAME_PTR_INFO (name)) != NULL))
            add_partitioned_vars_to_ptset (&pi->pt, decls_to_partitions,
                                           &visited, temp);
@@ -6270,16 +6269,15 @@ pass_expand::execute (function *fun)
 
   /* Now propagate the RTL assignment of each partition to the
      underlying var of each SSA_NAME.  */
-  for (i = 1; i < num_ssa_names; i++)
-    {
-      tree name = ssa_name (i);
+  tree name;
 
-      if (!name
-         /* We might have generated new SSA names in
-            update_alias_info_with_stack_vars.  They will have a NULL
-            defining statements, and won't be part of the partitioning,
-            so ignore those.  */
-         || !SSA_NAME_DEF_STMT (name))
+  FOR_EACH_SSA_NAME (i, name, cfun)
+    {
+      /* We might have generated new SSA names in
+        update_alias_info_with_stack_vars.  They will have a NULL
+        defining statements, and won't be part of the partitioning,
+        so ignore those.  */
+      if (!SSA_NAME_DEF_STMT (name))
        continue;
 
       adjust_one_expanded_partition_var (name);
@@ -6288,17 +6286,15 @@ pass_expand::execute (function *fun)
   /* Clean up RTL of variables that straddle across multiple
      partitions, and check that the rtl of any PARM_DECLs that are not
      cleaned up is that of their default defs.  */
-  for (i = 1; i < num_ssa_names; i++)
+  FOR_EACH_SSA_NAME (i, name, cfun)
     {
-      tree name = ssa_name (i);
       int part;
 
-      if (!name
-         /* We might have generated new SSA names in
-            update_alias_info_with_stack_vars.  They will have a NULL
-            defining statements, and won't be part of the partitioning,
-            so ignore those.  */
-         || !SSA_NAME_DEF_STMT (name))
+      /* We might have generated new SSA names in
+        update_alias_info_with_stack_vars.  They will have a NULL
+        defining statements, and won't be part of the partitioning,
+        so ignore those.  */
+      if (!SSA_NAME_DEF_STMT (name))
        continue;
       part = var_to_partition (SA.map, name);
       if (part == NO_PARTITION)
index c418440c55079f1352afbc03cb6a2abe46b3ef7d..df140d40446df013d25bcde6f13af82bf00c8f47 100644 (file)
@@ -931,11 +931,11 @@ ipa_simd_modify_function_body (struct cgraph_node *node,
     }
 
   l = adjustments.length ();
-  for (i = 1; i < num_ssa_names; i++)
+  tree name;
+
+  FOR_EACH_SSA_NAME (i, name, cfun)
     {
-      tree name = ssa_name (i);
-      if (name
-         && SSA_NAME_VAR (name)
+      if (SSA_NAME_VAR (name)
          && TREE_CODE (SSA_NAME_VAR (name)) == PARM_DECL)
        {
          for (j = 0; j < l; j++)
index 57c84108a5c5b9561e6344bb905da0e7230c020e..badbd96951c933acca8eb4470aca93b6c097010b 100644 (file)
@@ -7581,11 +7581,13 @@ dump_function_to_file (tree fndecl, FILE *file, int flags)
 
            any_var = true;
          }
+
+      tree name;
+
       if (gimple_in_ssa_p (cfun))
-       for (ix = 1; ix < num_ssa_names; ++ix)
+       FOR_EACH_SSA_NAME (ix, name, cfun)
          {
-           tree name = ssa_name (ix);
-           if (name && !SSA_NAME_VAR (name))
+           if (!SSA_NAME_VAR (name))
              {
                fprintf (file, "  ");
                print_generic_expr (file, TREE_TYPE (name), flags);
index ceafa68b9ea0c7f46c9cd4a4f3e41a053f67d102..a4ff60876c35db646ca53f0b1b168a3f64ac75f6 100644 (file)
@@ -2341,7 +2341,6 @@ pass_build_ssa::execute (function *fun)
 {
   bitmap_head *dfs;
   basic_block bb;
-  unsigned i;
 
   /* Initialize operand data structures.  */
   init_ssa_operands (fun);
@@ -2385,13 +2384,14 @@ pass_build_ssa::execute (function *fun)
   /* Try to get rid of all gimplifier generated temporaries by making
      its SSA names anonymous.  This way we can garbage collect them
      all after removing unused locals which we do in our TODO.  */
-  for (i = 1; i < num_ssa_names; ++i)
+  unsigned i;
+  tree name;
+
+  FOR_EACH_SSA_NAME (i, name, cfun)
     {
-      tree decl, name = ssa_name (i);
-      if (!name
-         || SSA_NAME_IS_DEFAULT_DEF (name))
+      if (SSA_NAME_IS_DEFAULT_DEF (name))
        continue;
-      decl = SSA_NAME_VAR (name);
+      tree decl = SSA_NAME_VAR (name);
       if (decl
          && TREE_CODE (decl) == VAR_DECL
          && !VAR_DECL_IS_VIRTUAL_OPERAND (decl)
@@ -3283,12 +3283,12 @@ update_ssa (unsigned update_flags)
         placement heuristics.  */
       prepare_block_for_update (start_bb, insert_phi_p);
 
+      tree name;
+
       if (flag_checking)
-       for (i = 1; i < num_ssa_names; ++i)
+       FOR_EACH_SSA_NAME (i, name, cfun)
          {
-           tree name = ssa_name (i);
-           if (!name
-               || virtual_operand_p (name))
+           if (virtual_operand_p (name))
              continue;
 
            /* For all but virtual operands, which do not have SSA names
index 8051a669b37ab79b240d62f364711fa11e20b275..30de461259891d7a761df1109c9c0d31896b631c 100644 (file)
@@ -450,6 +450,7 @@ void
 dump_alias_info (FILE *file)
 {
   unsigned i;
+  tree ptr;
   const char *funcname
     = lang_hooks.decl_printable_name (current_function_decl, 2);
   tree var;
@@ -471,13 +472,11 @@ dump_alias_info (FILE *file)
 
   fprintf (file, "\n\nFlow-insensitive points-to information\n\n");
 
-  for (i = 1; i < num_ssa_names; i++)
+  FOR_EACH_SSA_NAME (i, ptr, cfun)
     {
-      tree ptr = ssa_name (i);
       struct ptr_info_def *pi;
 
-      if (ptr == NULL_TREE
-         || !POINTER_TYPE_P (TREE_TYPE (ptr))
+      if (!POINTER_TYPE_P (TREE_TYPE (ptr))
          || SSA_NAME_IN_FREE_LIST (ptr))
        continue;
 
index 987130403ce40171879a021991767a2181ffdc09..d5a05608f781af46633ac74a9d16948cec4f68cc 100644 (file)
@@ -898,24 +898,23 @@ ccp_finalize (bool nonzero_p)
 {
   bool something_changed;
   unsigned i;
+  tree name;
 
   do_dbg_cnt ();
 
   /* Derive alignment and misalignment information from partially
      constant pointers in the lattice or nonzero bits from partially
      constant integers.  */
-  for (i = 1; i < num_ssa_names; ++i)
+  FOR_EACH_SSA_NAME (i, name, cfun)
     {
-      tree name = ssa_name (i);
       ccp_prop_value_t *val;
       unsigned int tem, align;
 
-      if (!name
-         || (!POINTER_TYPE_P (TREE_TYPE (name))
-             && (!INTEGRAL_TYPE_P (TREE_TYPE (name))
-                 /* Don't record nonzero bits before IPA to avoid
-                    using too much memory.  */
-                 || !nonzero_p)))
+      if (!POINTER_TYPE_P (TREE_TYPE (name))
+         && (!INTEGRAL_TYPE_P (TREE_TYPE (name))
+             /* Don't record nonzero bits before IPA to avoid
+                using too much memory.  */
+             || !nonzero_p))
        continue;
 
       val = get_value (name);
index 34c3fa16ccf852343589377e69cf7edaefdf1d29..01f6c5f82390d808c6828585974a8cb50ee4a9f6 100644 (file)
@@ -955,12 +955,11 @@ build_ssa_conflict_graph (tree_live_info_p liveinfo)
       if (bb == entry)
        {
          unsigned i;
-         for (i = 1; i < num_ssa_names; i++)
-           {
-             tree var = ssa_name (i);
+         tree var;
 
-             if (!var
-                 || !SSA_NAME_IS_DEFAULT_DEF (var)
+         FOR_EACH_SSA_NAME (i, var, cfun)
+           {
+             if (!SSA_NAME_IS_DEFAULT_DEF (var)
                  || !SSA_NAME_VAR (var)
                  || VAR_P (SSA_NAME_VAR (var)))
                continue;
@@ -1261,10 +1260,9 @@ create_outofssa_var_map (coalesce_list *cl, bitmap used_in_copy)
   /* Now process result decls and live on entry variables for entry into
      the coalesce list.  */
   first = NULL_TREE;
-  for (i = 1; i < num_ssa_names; i++)
+  FOR_EACH_SSA_NAME (i, var, cfun)
     {
-      var = ssa_name (i);
-      if (var != NULL_TREE && !virtual_operand_p (var))
+      if (!virtual_operand_p (var))
         {
          coalesce_with_default (var, cl, used_in_copy);
 
@@ -1806,6 +1804,7 @@ coalesce_ssa_name (void)
   bitmap used_in_copies = BITMAP_ALLOC (NULL);
   var_map map;
   unsigned int i;
+  tree a;
 
   cl = create_coalesce_list ();
   map = create_outofssa_var_map (cl, used_in_copies);
@@ -1817,12 +1816,9 @@ coalesce_ssa_name (void)
     {
       hash_table<ssa_name_var_hash> ssa_name_hash (10);
 
-      for (i = 1; i < num_ssa_names; i++)
+      FOR_EACH_SSA_NAME (i, a, cfun)
        {
-         tree a = ssa_name (i);
-
-         if (a
-             && SSA_NAME_VAR (a)
+         if (SSA_NAME_VAR (a)
              && !DECL_IGNORED_P (SSA_NAME_VAR (a))
              && (!has_zero_uses (a) || !SSA_NAME_IS_DEFAULT_DEF (a)
                  || !VAR_P (SSA_NAME_VAR (a))))
index 3d1792646b6d64ef88060672781007d2b2c10419..fcf4fa9464afc44f693a9b6cf9c9942c61f0cade 100644 (file)
@@ -503,14 +503,13 @@ static bool
 fini_copy_prop (void)
 {
   unsigned i;
+  tree var;
 
   /* Set the final copy-of value for each variable by traversing the
      copy-of chains.  */
-  for (i = 1; i < num_ssa_names; i++)
+  FOR_EACH_SSA_NAME (i, var, cfun)
     {
-      tree var = ssa_name (i);
-      if (!var
-         || !copy_of[i].value
+      if (!copy_of[i].value
          || copy_of[i].value == var)
        continue;
 
index eccea2f62b9d84d6709e2cc634127cd6ea896606..a5c354699a0fd8fd7273b09c211a7d24c3c7f5bf 100644 (file)
@@ -1247,11 +1247,8 @@ dump_immediate_uses (FILE *file)
   unsigned int x;
 
   fprintf (file, "Immediate_uses: \n\n");
-  for (x = 1; x < num_ssa_names; x++)
+  FOR_EACH_SSA_NAME (x, var, cfun)
     {
-      var = ssa_name (x);
-      if (!var)
-        continue;
       dump_immediate_uses_for (file, var);
     }
 }
index fdb1c2c3965c572a139efcae926b6fa96ebfa918..67a05133850ee1660fc0b03ac7d385b1cadf75e7 100644 (file)
@@ -3670,15 +3670,14 @@ compute_avail (void)
   basic_block *worklist;
   size_t sp = 0;
   unsigned i;
+  tree name;
 
   /* We pretend that default definitions are defined in the entry block.
      This includes function arguments and the static chain decl.  */
-  for (i = 1; i < num_ssa_names; ++i)
+  FOR_EACH_SSA_NAME (i, name, cfun)
     {
-      tree name = ssa_name (i);
       pre_expr e;
-      if (!name
-         || !SSA_NAME_IS_DEFAULT_DEF (name)
+      if (!SSA_NAME_IS_DEFAULT_DEF (name)
          || has_zero_uses (name)
          || virtual_operand_p (name))
        continue;
index 21b3d56605278f80b661c8ae8449fa6e5eb410db..e120b4f72dcd14931b6999b207cef0666aba39fa 100644 (file)
@@ -4290,7 +4290,6 @@ free_vn_table (vn_tables_t table)
 static void
 init_scc_vn (void)
 {
-  size_t i;
   int j;
   int *rpo_numbers_temp;
 
@@ -4339,12 +4338,11 @@ init_scc_vn (void)
 
   /* Create the VN_INFO structures, and initialize value numbers to
      TOP or VARYING for parameters.  */
-  for (i = 1; i < num_ssa_names; i++)
-    {
-      tree name = ssa_name (i);
-      if (!name)
-       continue;
+  size_t i;
+  tree name;
 
+  FOR_EACH_SSA_NAME (i, name, cfun)
+    {
       VN_INFO_GET (name)->valnum = VN_TOP;
       VN_INFO (name)->needs_insertion = false;
       VN_INFO (name)->expr = NULL;
@@ -4402,11 +4400,12 @@ init_scc_vn (void)
 void
 scc_vn_restore_ssa_info (void)
 {
-  for (unsigned i = 0; i < num_ssa_names; i++)
+  unsigned i;
+  tree name;
+
+  FOR_EACH_SSA_NAME (i, name, cfun)
     {
-      tree name = ssa_name (i);
-      if (name
-         && has_VN_INFO (name))
+      if (has_VN_INFO (name))
        {
          if (VN_INFO (name)->needs_insertion)
            ;
@@ -4428,6 +4427,7 @@ void
 free_scc_vn (void)
 {
   size_t i;
+  tree name;
 
   delete constant_to_value_id;
   constant_to_value_id = NULL;
@@ -4436,11 +4436,9 @@ free_scc_vn (void)
   shared_lookup_references.release ();
   XDELETEVEC (rpo_numbers);
 
-  for (i = 0; i < num_ssa_names; i++)
+  FOR_EACH_SSA_NAME (i, name, cfun)
     {
-      tree name = ssa_name (i);
-      if (name
-         && has_VN_INFO (name)
+      if (has_VN_INFO (name)
          && VN_INFO (name)->needs_insertion)
        release_ssa_name (name);
     }
@@ -4797,13 +4795,11 @@ run_scc_vn (vn_lookup_kind default_vn_walk_kind_)
 
   /* Initialize the value ids and prune out remaining VN_TOPs
      from dead code.  */
-  for (i = 1; i < num_ssa_names; ++i)
+  tree name;
+
+  FOR_EACH_SSA_NAME (i, name, cfun)
     {
-      tree name = ssa_name (i);
-      vn_ssa_aux_t info;
-      if (!name)
-       continue;
-      info = VN_INFO (name);
+      vn_ssa_aux_t info = VN_INFO (name);
       if (!info->visited)
        info->valnum = name;
       if (info->valnum == name
@@ -4814,13 +4810,9 @@ run_scc_vn (vn_lookup_kind default_vn_walk_kind_)
     }
 
   /* Propagate.  */
-  for (i = 1; i < num_ssa_names; ++i)
+  FOR_EACH_SSA_NAME (i, name, cfun)
     {
-      tree name = ssa_name (i);
-      vn_ssa_aux_t info;
-      if (!name)
-       continue;
-      info = VN_INFO (name);
+      vn_ssa_aux_t info = VN_INFO (name);
       if (TREE_CODE (info->valnum) == SSA_NAME
          && info->valnum != name
          && info->value_id != VN_INFO (info->valnum)->value_id)
@@ -4832,11 +4824,9 @@ run_scc_vn (vn_lookup_kind default_vn_walk_kind_)
   if (dump_file && (dump_flags & TDF_DETAILS))
     {
       fprintf (dump_file, "Value numbers:\n");
-      for (i = 0; i < num_ssa_names; i++)
+      FOR_EACH_SSA_NAME (i, name, cfun)
        {
-         tree name = ssa_name (i);
-         if (name
-             && VN_INFO (name)->visited
+         if (VN_INFO (name)->visited
              && SSA_VAL (name) != name)
            {
              print_generic_expr (dump_file, name, 0);
index fd96c3ab7971d00f38de95f9be75ee36324392eb..cbf509befe057858a2f6cad0359e4158edef2fd1 100644 (file)
@@ -7028,7 +7028,6 @@ static void
 compute_points_to_sets (void)
 {
   basic_block bb;
-  unsigned i;
   varinfo_t vi;
 
   timevar_push (TV_TREE_PTA);
@@ -7077,11 +7076,12 @@ compute_points_to_sets (void)
   cfun->gimple_df->escaped.escaped = 0;
 
   /* Compute the points-to sets for pointer SSA_NAMEs.  */
-  for (i = 0; i < num_ssa_names; ++i)
+  unsigned i;
+  tree ptr;
+
+  FOR_EACH_SSA_NAME (i, ptr, cfun)
     {
-      tree ptr = ssa_name (i);
-      if (ptr
-         && POINTER_TYPE_P (TREE_TYPE (ptr)))
+      if (POINTER_TYPE_P (TREE_TYPE (ptr)))
        find_what_p_points_to (cfun->decl, ptr);
     }
 
index 2a772b253e1f26d525f4ac3ff6392de2f1826f76..c7d8b7eb204df40c7591bd778f0416822f3b6935 100644 (file)
@@ -185,8 +185,6 @@ extern void debug_ter (FILE *, temp_expr_table *);
 static temp_expr_table *
 new_temp_expr_table (var_map map)
 {
-  unsigned x;
-
   temp_expr_table *t = XNEW (struct temp_expr_table);
   t->map = map;
 
@@ -201,12 +199,13 @@ new_temp_expr_table (var_map map)
 
   t->replaceable_expressions = NULL;
   t->num_in_part = XCNEWVEC (int, num_var_partitions (map));
-  for (x = 1; x < num_ssa_names; x++)
+
+  unsigned x;
+  tree name;
+
+  FOR_EACH_SSA_NAME (x, name, cfun)
     {
       int p;
-      tree name = ssa_name (x);
-      if (!name)
-        continue;
       p = var_to_partition (map, name);
       if (p != NO_PARTITION)
         t->num_in_part[p]++;
index aae383d51083e484145bdd9492c3b182214a8eb1..d442a5f89e1cf05bc6495e2d51f9db58bd7beedb 100644 (file)
@@ -1005,7 +1005,6 @@ error:
 DEBUG_FUNCTION void
 verify_ssa (bool check_modified_stmt, bool check_ssa_operands)
 {
-  size_t i;
   basic_block bb;
   basic_block *definition_block = XCNEWVEC (basic_block, num_ssa_names);
   ssa_op_iter iter;
@@ -1018,24 +1017,23 @@ verify_ssa (bool check_modified_stmt, bool check_ssa_operands)
   timevar_push (TV_TREE_SSA_VERIFY);
 
   /* Keep track of SSA names present in the IL.  */
-  for (i = 1; i < num_ssa_names; i++)
+  size_t i;
+  tree name;
+
+  FOR_EACH_SSA_NAME (i, name, cfun)
     {
-      tree name = ssa_name (i);
-      if (name)
-       {
-         gimple *stmt;
-         TREE_VISITED (name) = 0;
+      gimple *stmt;
+      TREE_VISITED (name) = 0;
 
-         verify_ssa_name (name, virtual_operand_p (name));
+      verify_ssa_name (name, virtual_operand_p (name));
 
-         stmt = SSA_NAME_DEF_STMT (name);
-         if (!gimple_nop_p (stmt))
-           {
-             basic_block bb = gimple_bb (stmt);
-             if (verify_def (bb, definition_block,
-                             name, stmt, virtual_operand_p (name)))
-               goto err;
-           }
+      stmt = SSA_NAME_DEF_STMT (name);
+      if (!gimple_nop_p (stmt))
+       {
+         basic_block bb = gimple_bb (stmt);
+         if (verify_def (bb, definition_block,
+                         name, stmt, virtual_operand_p (name)))
+           goto err;
        }
     }
 
index 8e66ce6f3cebdc4a15f0a8b8902601abd717f86d..4496e1d044c0af0fe92eef08bb6b62cc25a7273a 100644 (file)
@@ -62,6 +62,10 @@ struct GTY ((variable_size)) range_info_def {
 #define num_ssa_names (vec_safe_length (cfun->gimple_df->ssa_names))
 #define ssa_name(i) ((*cfun->gimple_df->ssa_names)[(i)])
 
+#define FOR_EACH_SSA_NAME(I, VAR, FN)                                  \
+  for (I = 1; SSANAMES (FN)->iterate (I, &VAR); ++I)                   \
+    if (VAR)
+
 /* Sets the value range to SSA.  */
 extern void set_range_info (tree, enum value_range_type, const wide_int_ref &,
                            const wide_int_ref &);