]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - gcc/tree-ssa.c
Merger of git branch "gimple-classes-v2-option-3"
[thirdparty/gcc.git] / gcc / tree-ssa.c
index 25354617a18a596dc0996718b9093055f08c7d35..835e3c12458ee335e1b19e3a581242f504624994 100644 (file)
@@ -157,8 +157,8 @@ redirect_edge_var_map_destroy (void)
 edge
 ssa_redirect_edge (edge e, basic_block dest)
 {
-  gimple_stmt_iterator gsi;
-  gimple phi;
+  gphi_iterator gsi;
+  gphi *phi;
 
   redirect_edge_var_map_clear (e);
 
@@ -168,7 +168,7 @@ ssa_redirect_edge (edge e, basic_block dest)
       tree def;
       source_location locus ;
 
-      phi = gsi_stmt (gsi);
+      phi = gsi.phi ();
       def = gimple_phi_arg_def (phi, e->dest_idx);
       locus = gimple_phi_arg_location (phi, e->dest_idx);
 
@@ -190,10 +190,10 @@ ssa_redirect_edge (edge e, basic_block dest)
 void
 flush_pending_stmts (edge e)
 {
-  gimple phi;
+  gphi *phi;
   edge_var_map *vm;
   int i;
-  gimple_stmt_iterator gsi;
+  gphi_iterator gsi;
 
   vec<edge_var_map> *v = redirect_edge_var_map_vector (e);
   if (!v)
@@ -205,7 +205,7 @@ flush_pending_stmts (edge e)
     {
       tree def;
 
-      phi = gsi_stmt (gsi);
+      phi = gsi.phi ();
       def = redirect_edge_var_map_def (vm);
       add_phi_arg (phi, def, e, redirect_edge_var_map_location (vm));
     }
@@ -366,7 +366,7 @@ insert_debug_temp_for_var_def (gimple_stmt_iterator *gsi, tree var)
      we'll have to drop debug information.  */
   if (gimple_code (def_stmt) == GIMPLE_PHI)
     {
-      value = degenerate_phi_result (def_stmt);
+      value = degenerate_phi_result (as_a <gphi *> (def_stmt));
       if (value && walk_tree (&value, find_released_ssa_name, NULL, NULL))
        value = NULL;
       /* error_mark_node is what fixup_noreturn_call changes PHI arguments
@@ -444,7 +444,7 @@ insert_debug_temp_for_var_def (gimple_stmt_iterator *gsi, tree var)
        ;
       else
        {
-         gimple def_temp;
+         gdebug *def_temp;
          tree vexpr = make_node (DEBUG_EXPR_DECL);
 
          def_temp = gimple_build_debug_bind (vexpr,
@@ -838,7 +838,7 @@ verify_use (basic_block bb, basic_block def_bb, use_operand_p use_p,
       definition of SSA_NAME.  */
 
 static bool
-verify_phi_args (gimple phi, basic_block bb, basic_block *definition_block)
+verify_phi_args (gphi *phi, basic_block bb, basic_block *definition_block)
 {
   edge e;
   bool err = false;
@@ -969,9 +969,7 @@ verify_ssa (bool check_modified_stmt, bool check_ssa_operands)
   FOR_EACH_BB_FN (bb, cfun)
     {
       edge e;
-      gimple phi;
       edge_iterator ei;
-      gimple_stmt_iterator gsi;
 
       /* Make sure that all edges have a clear 'aux' field.  */
       FOR_EACH_EDGE (e, ei, bb->preds)
@@ -985,9 +983,9 @@ verify_ssa (bool check_modified_stmt, bool check_ssa_operands)
        }
 
       /* Verify the arguments for every PHI node in the block.  */
-      for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi))
+      for (gphi_iterator gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi))
        {
-         phi = gsi_stmt (gsi);
+         gphi *phi = gsi.phi ();
          if (verify_phi_args (phi, bb, definition_block))
            goto err;
 
@@ -996,7 +994,8 @@ verify_ssa (bool check_modified_stmt, bool check_ssa_operands)
        }
 
       /* Now verify all the uses and vuses in every statement of the block.  */
-      for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
+      for (gimple_stmt_iterator gsi = gsi_start_bb (bb); !gsi_end_p (gsi);
+          gsi_next (&gsi))
        {
          gimple stmt = gsi_stmt (gsi);
          use_operand_p use_p;
@@ -1406,7 +1405,6 @@ maybe_optimize_var (tree var, bitmap addresses_taken, bitmap not_reg_needs,
 void
 execute_update_addresses_taken (void)
 {
-  gimple_stmt_iterator gsi;
   basic_block bb;
   bitmap addresses_taken = BITMAP_ALLOC (NULL);
   bitmap not_reg_needs = BITMAP_ALLOC (NULL);
@@ -1420,7 +1418,8 @@ execute_update_addresses_taken (void)
      the function body.  */
   FOR_EACH_BB_FN (bb, cfun)
     {
-      for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
+      for (gimple_stmt_iterator gsi = gsi_start_bb (bb); !gsi_end_p (gsi);
+          gsi_next (&gsi))
        {
          gimple stmt = gsi_stmt (gsi);
          enum gimple_code code = gimple_code (stmt);
@@ -1463,9 +1462,10 @@ execute_update_addresses_taken (void)
 
          else if (code == GIMPLE_ASM)
            {
-             for (i = 0; i < gimple_asm_noutputs (stmt); ++i)
+             gasm *asm_stmt = as_a <gasm *> (stmt);
+             for (i = 0; i < gimple_asm_noutputs (asm_stmt); ++i)
                {
-                 tree link = gimple_asm_output_op (stmt, i);
+                 tree link = gimple_asm_output_op (asm_stmt, i);
                  tree lhs = TREE_VALUE (link);
                  if (TREE_CODE (lhs) != SSA_NAME)
                    {
@@ -1480,19 +1480,20 @@ execute_update_addresses_taken (void)
                        bitmap_set_bit (not_reg_needs, DECL_UID (decl));
                    }
                }
-             for (i = 0; i < gimple_asm_ninputs (stmt); ++i)
+             for (i = 0; i < gimple_asm_ninputs (asm_stmt); ++i)
                {
-                 tree link = gimple_asm_input_op (stmt, i);
+                 tree link = gimple_asm_input_op (asm_stmt, i);
                  if ((decl = non_rewritable_mem_ref_base (TREE_VALUE (link))))
                    bitmap_set_bit (not_reg_needs, DECL_UID (decl));
                }
            }
        }
 
-      for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi))
+      for (gphi_iterator gsi = gsi_start_phis (bb); !gsi_end_p (gsi);
+          gsi_next (&gsi))
        {
          size_t i;
-         gimple phi = gsi_stmt (gsi);
+         gphi *phi = gsi.phi ();
 
          for (i = 0; i < gimple_phi_num_args (phi); i++)
            {
@@ -1521,7 +1522,7 @@ execute_update_addresses_taken (void)
   if (!bitmap_empty_p (suitable_for_renaming))
     {
       FOR_EACH_BB_FN (bb, cfun)
-       for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi);)
+       for (gimple_stmt_iterator gsi = gsi_start_bb (bb); !gsi_end_p (gsi);)
          {
            gimple stmt = gsi_stmt (gsi);
 
@@ -1581,16 +1582,17 @@ execute_update_addresses_taken (void)
 
            else if (gimple_code (stmt) == GIMPLE_ASM)
              {
+               gasm *asm_stmt = as_a <gasm *> (stmt);
                unsigned i;
-               for (i = 0; i < gimple_asm_noutputs (stmt); ++i)
+               for (i = 0; i < gimple_asm_noutputs (asm_stmt); ++i)
                  {
-                   tree link = gimple_asm_output_op (stmt, i);
+                   tree link = gimple_asm_output_op (asm_stmt, i);
                    maybe_rewrite_mem_ref_base (&TREE_VALUE (link),
                                                suitable_for_renaming);
                  }
-               for (i = 0; i < gimple_asm_ninputs (stmt); ++i)
+               for (i = 0; i < gimple_asm_ninputs (asm_stmt); ++i)
                  {
-                   tree link = gimple_asm_input_op (stmt, i);
+                   tree link = gimple_asm_input_op (asm_stmt, i);
                    maybe_rewrite_mem_ref_base (&TREE_VALUE (link),
                                                suitable_for_renaming);
                  }