This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[tuples] gsi_start_phis
- From: Zdenek Dvorak <rakdver at kam dot mff dot cuni dot cz>
- To: gcc-patches at gcc dot gnu dot org, dnovillo at google dot com
- Date: Mon, 17 Mar 2008 03:23:36 +0100
- Subject: [tuples] gsi_start_phis
Hi,
this patch adds gsi_start_phis, as a shortcut for
gsi_start (phi_nodes (bb)). No new testsuite failures,
Zdenek
* gimple-iterator.c (gsi_for_stmt): Use gsi_start_phis.
(gsi_start_phis): New function.
* gimple.h (gsi_start_phis): Declare.
* tree-into-ssa.c (initialize_flags_in_bb, rewrite_initialize_block,
rewrite_add_phi_arguments, rewrite_update_init_block,
prepare_block_for_update): Use gsi_start_phis.
* tree-complex.c (init_dont_simulate_again, update_phi_components):
Ditto.
* tree-ssa-loop-manip.c (find_uses_to_rename_bb,
verify_loop_closed_ssa, split_loop_exit_edge,
tree_transform_and_unroll_loop): Ditto.
* tree-scalar-evolution.c (loop_closed_phi_def,
analyze_scalar_evolution_for_all_loop_phi_nodes, scev_const_prop):
Ditto.
* tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_args):
Ditto.
* tree-ssa-copyrename.c (rename_ssa_copies): Ditto.
* tree-ssa-ccp.c (ccp_initialize): Ditto.
* tree-ssa-loop-ivopts.c (find_bivs, mark_bivs,
find_interesting_uses_outside, find_interesting_uses,
determine_set_costs): Ditto.
* tree-ssa-propagate.c (simulate_block, ssa_prop_init,
substitute_and_fold): Ditto.
* tree-ssa-alias.c (dump_points_to_info, create_structure_vars): Ditto.
* gimple-pretty-print.c (dump_phi_nodes): Ditto.
* tree-data-ref.c (stmts_from_loop): Ditto.
* tree-ssa-coalesce.c (build_ssa_conflict_graph,
create_outofssa_var_map, coalesce_partitions): Ditto.
* tree-dfa.c (collect_dfa_stats): Ditto.
* tree-cfgcleanup.c (phi_alternatives_equal, remove_forwarder_block,
remove_forwarder_block_with_phi, merge_phi_nodes): Ditto.
* tree-ssa-live.c (remove_unused_locals, calculate_live_on_exit,
verify_live_on_entry): Ditto.
* tree-ssa.c (ssa_redirect_edge, flush_pending_stmts, verify_ssa,
execute_late_warn_uninitialized, execute_update_addresses_taken):
Ditto.
* tree-outof-ssa.c (eliminate_build, eliminate_virtual_phis,
rewrite_trees, remove_ssa_form, insert_backedge_copies):
Ditto.
* cfgloop.c (find_subloop_latch_edge_by_ivs): Ditto.
* tree-ssa-structalias.c (compute_points_to_sets, ipa_pta_execute):
Ditto.
* tree-cfg.c (remove_phi_nodes_and_edges_for_unreachable_block,
reinstall_phi_args, verify_stmts, gimple_make_forwarder_block,
add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi):
Ditto.
Index: tree-into-ssa.c
===================================================================
*** tree-into-ssa.c (revision 133280)
--- tree-into-ssa.c (working copy)
*************** initialize_flags_in_bb (basic_block bb)
*** 457,463 ****
gimple stmt;
gimple_stmt_iterator gsi;
! for (gsi = gsi_start (phi_nodes (bb)); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple phi = gsi_stmt (gsi);
set_rewrite_uses (phi, false);
--- 457,463 ----
gimple stmt;
gimple_stmt_iterator gsi;
! for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple phi = gsi_stmt (gsi);
set_rewrite_uses (phi, false);
*************** rewrite_initialize_block (struct dom_wal
*** 1343,1349 ****
/* Step 1. Register new definitions for every PHI node in the block.
Conceptually, all the PHI nodes are executed in parallel and each PHI
node introduces a new version for the associated variable. */
! for (gsi = gsi_start (phi_nodes (bb)); !gsi_end_p (gsi); gsi_next (&gsi))
{
tree result;
--- 1343,1349 ----
/* Step 1. Register new definitions for every PHI node in the block.
Conceptually, all the PHI nodes are executed in parallel and each PHI
node introduces a new version for the associated variable. */
! for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi))
{
tree result;
*************** rewrite_add_phi_arguments (struct dom_wa
*** 1447,1453 ****
gimple phi;
gimple_stmt_iterator gsi;
! for (gsi = gsi_start (phi_nodes (e->dest)); !gsi_end_p (gsi);
gsi_next (&gsi))
{
tree currdef;
--- 1447,1453 ----
gimple phi;
gimple_stmt_iterator gsi;
! for (gsi = gsi_start_phis (e->dest); !gsi_end_p (gsi);
gsi_next (&gsi))
{
tree currdef;
*************** rewrite_update_init_block (struct dom_wa
*** 1856,1862 ****
register it as a new definition for its corresponding name. Also
register definitions for names whose underlying symbols are
marked for renaming. */
! for (gsi = gsi_start (phi_nodes (bb)); !gsi_end_p (gsi); gsi_next (&gsi))
{
tree lhs, lhs_sym;
gimple phi = gsi_stmt (gsi);
--- 1856,1862 ----
register it as a new definition for its corresponding name. Also
register definitions for names whose underlying symbols are
marked for renaming. */
! for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi))
{
tree lhs, lhs_sym;
gimple phi = gsi_stmt (gsi);
*************** prepare_block_for_update (basic_block bb
*** 2451,2457 ****
/* Process PHI nodes marking interesting those that define or use
the symbols that we are interested in. */
! for (si = gsi_start (phi_nodes (bb)); !gsi_end_p (si); gsi_next (&si))
{
gimple phi = gsi_stmt (si);
tree lhs_sym, lhs = gimple_phi_result (phi);
--- 2451,2457 ----
/* Process PHI nodes marking interesting those that define or use
the symbols that we are interested in. */
! for (si = gsi_start_phis (bb); !gsi_end_p (si); gsi_next (&si))
{
gimple phi = gsi_stmt (si);
tree lhs_sym, lhs = gimple_phi_result (phi);
Index: tree-complex.c
===================================================================
*** tree-complex.c (revision 133280)
--- tree-complex.c (working copy)
*************** init_dont_simulate_again (void)
*** 191,197 ****
FOR_EACH_BB (bb)
{
! for (gsi = gsi_start (phi_nodes (bb)); !gsi_end_p (gsi); gsi_next (&gsi))
{
phi = gsi_stmt (gsi);
prop_set_simulate_again (phi,
--- 191,197 ----
FOR_EACH_BB (bb)
{
! for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi))
{
phi = gsi_stmt (gsi);
prop_set_simulate_again (phi,
*************** update_phi_components (basic_block bb)
*** 702,708 ****
{
gimple_stmt_iterator gsi;
! for (gsi = gsi_start (phi_nodes (bb)); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple phi = gsi_stmt (gsi);
--- 702,708 ----
{
gimple_stmt_iterator gsi;
! for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple phi = gsi_stmt (gsi);
Index: tree-ssa-loop-manip.c
===================================================================
*** tree-ssa-loop-manip.c (revision 133280)
--- tree-ssa-loop-manip.c (working copy)
*************** find_uses_to_rename_bb (basic_block bb,
*** 289,297 ****
edge_iterator ei;
FOR_EACH_EDGE (e, ei, bb->succs)
! for (bsi = gsi_start (phi_nodes (e->dest));
! !gsi_end_p (bsi);
! gsi_next (&bsi))
find_uses_to_rename_use (bb, PHI_ARG_DEF_FROM_EDGE (gsi_stmt (bsi), e),
use_blocks, need_phis);
--- 289,295 ----
edge_iterator ei;
FOR_EACH_EDGE (e, ei, bb->succs)
! for (bsi = gsi_start_phis (e->dest); !gsi_end_p (bsi); gsi_next (&bsi))
find_uses_to_rename_use (bb, PHI_ARG_DEF_FROM_EDGE (gsi_stmt (bsi), e),
use_blocks, need_phis);
*************** verify_loop_closed_ssa (void)
*** 446,452 ****
FOR_EACH_BB (bb)
{
! for (bsi = gsi_start (phi_nodes (bb)); !gsi_end_p (bsi); gsi_next (&bsi))
{
phi = gsi_stmt (bsi);
FOR_EACH_EDGE (e, ei, bb->preds)
--- 444,450 ----
FOR_EACH_BB (bb)
{
! for (bsi = gsi_start_phis (bb); !gsi_end_p (bsi); gsi_next (&bsi))
{
phi = gsi_stmt (bsi);
FOR_EACH_EDGE (e, ei, bb->preds)
*************** split_loop_exit_edge (edge exit)
*** 472,478 ****
use_operand_p op_p;
gimple_stmt_iterator psi;
! for (psi = gsi_start (phi_nodes (dest)); !gsi_end_p (psi); gsi_next (&psi))
{
phi = gsi_stmt (psi);
op_p = PHI_ARG_DEF_PTR_FROM_EDGE (phi, single_succ_edge (bb));
--- 470,476 ----
use_operand_p op_p;
gimple_stmt_iterator psi;
! for (psi = gsi_start_phis (dest); !gsi_end_p (psi); gsi_next (&psi))
{
phi = gsi_stmt (psi);
op_p = PHI_ARG_DEF_PTR_FROM_EDGE (phi, single_succ_edge (bb));
*************** tree_transform_and_unroll_loop (struct l
*** 969,976 ****
old_entry = loop_preheader_edge (loop);
new_entry = loop_preheader_edge (new_loop);
old_latch = loop_latch_edge (loop);
! for (psi_old_loop = gsi_start (phi_nodes (loop->header)),
! psi_new_loop = gsi_start (phi_nodes (new_loop->header));
!gsi_end_p (psi_old_loop);
gsi_next (&psi_old_loop), gsi_next (&psi_new_loop))
{
--- 967,974 ----
old_entry = loop_preheader_edge (loop);
new_entry = loop_preheader_edge (new_loop);
old_latch = loop_latch_edge (loop);
! for (psi_old_loop = gsi_start_phis (loop->header),
! psi_new_loop = gsi_start_phis (new_loop->header);
!gsi_end_p (psi_old_loop);
gsi_next (&psi_old_loop), gsi_next (&psi_new_loop))
{
Index: tree-scalar-evolution.c
===================================================================
*** tree-scalar-evolution.c (revision 133280)
--- tree-scalar-evolution.c (working copy)
*************** loop_closed_phi_def (tree var)
*** 1957,1965 ****
if (!exit)
return NULL_TREE;
! for (psi = gsi_start (phi_nodes (exit->dest));
! !gsi_end_p (psi);
! gsi_next (&psi))
{
phi = gsi_stmt (psi);
if (PHI_ARG_DEF_FROM_EDGE (phi, exit) == var)
--- 1957,1963 ----
if (!exit)
return NULL_TREE;
! for (psi = gsi_start_phis (exit->dest); !gsi_end_p (psi); gsi_next (&psi))
{
phi = gsi_stmt (psi);
if (PHI_ARG_DEF_FROM_EDGE (phi, exit) == var)
*************** analyze_scalar_evolution_for_all_loop_ph
*** 2560,2566 ****
loop = loop_containing_stmt (cond);
bb = loop->header;
! for (psi = gsi_start (phi_nodes (bb)); !gsi_end_p (psi); gsi_next (&psi))
{
phi = gsi_stmt (psi);
if (is_gimple_reg (PHI_RESULT (phi)))
--- 2558,2564 ----
loop = loop_containing_stmt (cond);
bb = loop->header;
! for (psi = gsi_start_phis (bb); !gsi_end_p (psi); gsi_next (&psi))
{
phi = gsi_stmt (psi);
if (is_gimple_reg (PHI_RESULT (phi)))
*************** scev_const_prop (void)
*** 2797,2803 ****
{
loop = bb->loop_father;
! for (psi = gsi_start (phi_nodes (bb)); !gsi_end_p (psi); gsi_next (&psi))
{
phi = gsi_stmt (psi);
name = PHI_RESULT (phi);
--- 2795,2801 ----
{
loop = bb->loop_father;
! for (psi = gsi_start_phis (bb); !gsi_end_p (psi); gsi_next (&psi))
{
phi = gsi_stmt (psi);
name = PHI_RESULT (phi);
*************** scev_const_prop (void)
*** 2879,2885 ****
ex_loop = superloop_at_depth (loop,
loop_depth (exit->dest->loop_father) + 1);
! for (psi = gsi_start (phi_nodes (exit->dest)); !gsi_end_p (psi); )
{
phi = gsi_stmt (psi);
rslt = PHI_RESULT (phi);
--- 2877,2883 ----
ex_loop = superloop_at_depth (loop,
loop_depth (exit->dest->loop_father) + 1);
! for (psi = gsi_start_phis (exit->dest); !gsi_end_p (psi); )
{
phi = gsi_stmt (psi);
rslt = PHI_RESULT (phi);
Index: tree-phinodes.c
===================================================================
*** tree-phinodes.c (revision 133280)
--- tree-phinodes.c (working copy)
*************** reserve_phi_args_for_new_edge (basic_blo
*** 319,325 ****
size_t cap = ideal_phi_node_len (len + 4);
gimple_stmt_iterator gsi;
! for (gsi = gsi_start (phi_nodes (bb)); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple *loc = gsi_stmt_ptr (&gsi);
--- 319,325 ----
size_t cap = ideal_phi_node_len (len + 4);
gimple_stmt_iterator gsi;
! for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple *loc = gsi_stmt_ptr (&gsi);
*************** remove_phi_args (edge e)
*** 445,451 ****
{
gimple_stmt_iterator gsi;
! for (gsi = gsi_start (phi_nodes (e->dest)); !gsi_end_p (gsi); gsi_next (&gsi))
remove_phi_arg_num (gsi_stmt (gsi), e->dest_idx);
}
--- 445,451 ----
{
gimple_stmt_iterator gsi;
! for (gsi = gsi_start_phis (e->dest); !gsi_end_p (gsi); gsi_next (&gsi))
remove_phi_arg_num (gsi_stmt (gsi), e->dest_idx);
}
Index: tree-ssa-copyrename.c
===================================================================
*** tree-ssa-copyrename.c (revision 133280)
--- tree-ssa-copyrename.c (working copy)
*************** rename_ssa_copies (void)
*** 335,342 ****
FOR_EACH_BB (bb)
{
/* Treat PHI nodes as copies between the result and each argument. */
! gimple_seq phi_seq = phi_nodes (bb);
! for (gsi = gsi_start (phi_seq); !gsi_end_p (gsi); gsi_next (&gsi))
{
size_t i;
tree res;
--- 335,341 ----
FOR_EACH_BB (bb)
{
/* Treat PHI nodes as copies between the result and each argument. */
! for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi))
{
size_t i;
tree res;
Index: tree-ssa-ccp.c
===================================================================
*** tree-ssa-ccp.c (revision 133280)
--- tree-ssa-ccp.c (working copy)
*************** ccp_initialize (void)
*** 711,717 ****
{
gimple_stmt_iterator i;
! for (i = gsi_start (phi_nodes (bb)); !gsi_end_p (i); gsi_next (&i))
{
gimple phi = gsi_stmt (i);
--- 711,717 ----
{
gimple_stmt_iterator i;
! for (i = gsi_start_phis (bb); !gsi_end_p (i); gsi_next (&i))
{
gimple phi = gsi_stmt (i);
Index: tree-ssa-loop-ivopts.c
===================================================================
*** tree-ssa-loop-ivopts.c (revision 133281)
--- tree-ssa-loop-ivopts.c (working copy)
*************** find_bivs (struct ivopts_data *data)
*** 898,906 ****
struct loop *loop = data->current_loop;
gimple_stmt_iterator psi;
! for (psi = gsi_start (phi_nodes (loop->header));
! !gsi_end_p (psi);
! gsi_next (&psi))
{
phi = gsi_stmt (psi);
--- 898,904 ----
struct loop *loop = data->current_loop;
gimple_stmt_iterator psi;
! for (psi = gsi_start_phis (loop->header); !gsi_end_p (psi); gsi_next (&psi))
{
phi = gsi_stmt (psi);
*************** mark_bivs (struct ivopts_data *data)
*** 941,949 ****
basic_block incr_bb;
gimple_stmt_iterator psi;
! for (psi = gsi_start (phi_nodes (loop->header));
! !gsi_end_p (psi);
! gsi_next (&psi))
{
phi = gsi_stmt (psi);
--- 939,945 ----
basic_block incr_bb;
gimple_stmt_iterator psi;
! for (psi = gsi_start_phis (loop->header); !gsi_end_p (psi); gsi_next (&psi))
{
phi = gsi_stmt (psi);
*************** find_interesting_uses_outside (struct iv
*** 1770,1778 ****
gimple_stmt_iterator psi;
tree def;
! for (psi = gsi_start (phi_nodes (exit->dest));
! !gsi_end_p (psi);
! gsi_next (&psi))
{
phi = gsi_stmt (psi);
def = PHI_ARG_DEF_FROM_EDGE (phi, exit);
--- 1766,1772 ----
gimple_stmt_iterator psi;
tree def;
! for (psi = gsi_start_phis (exit->dest); !gsi_end_p (psi); gsi_next (&psi))
{
phi = gsi_stmt (psi);
def = PHI_ARG_DEF_FROM_EDGE (phi, exit);
*************** find_interesting_uses (struct ivopts_dat
*** 1806,1812 ****
&& !flow_bb_inside_loop_p (data->current_loop, e->dest))
find_interesting_uses_outside (data, e);
! for (bsi = gsi_start (phi_nodes (bb)); !gsi_end_p (bsi); gsi_next (&bsi))
find_interesting_uses_stmt (data, gsi_stmt (bsi));
for (bsi = gsi_start_bb (bb); !gsi_end_p (bsi); gsi_next (&bsi))
find_interesting_uses_stmt (data, gsi_stmt (bsi));
--- 1800,1806 ----
&& !flow_bb_inside_loop_p (data->current_loop, e->dest))
find_interesting_uses_outside (data, e);
! for (bsi = gsi_start_phis (bb); !gsi_end_p (bsi); gsi_next (&bsi))
find_interesting_uses_stmt (data, gsi_stmt (bsi));
for (bsi = gsi_start_bb (bb); !gsi_end_p (bsi); gsi_next (&bsi))
find_interesting_uses_stmt (data, gsi_stmt (bsi));
*************** determine_set_costs (struct ivopts_data
*** 4064,4072 ****
}
n = 0;
! for (psi = gsi_start (phi_nodes (loop->header));
! !gsi_end_p (psi);
! gsi_next (&psi))
{
phi = gsi_stmt (psi);
op = PHI_RESULT (phi);
--- 4058,4064 ----
}
n = 0;
! for (psi = gsi_start_phis (loop->header); !gsi_end_p (psi); gsi_next (&psi))
{
phi = gsi_stmt (psi);
op = PHI_RESULT (phi);
Index: tree-ssa-propagate.c
===================================================================
*** tree-ssa-propagate.c (revision 133280)
--- tree-ssa-propagate.c (working copy)
*************** simulate_block (basic_block block)
*** 417,423 ****
/* Always simulate PHI nodes, even if we have simulated this block
before. */
! for (gsi = gsi_start (phi_nodes (block)); !gsi_end_p (gsi); gsi_next (&gsi))
simulate_stmt (gsi_stmt (gsi));
/* If this is the first time we've simulated this block, then we
--- 417,423 ----
/* Always simulate PHI nodes, even if we have simulated this block
before. */
! for (gsi = gsi_start_phis (block); !gsi_end_p (gsi); gsi_next (&gsi))
simulate_stmt (gsi_stmt (gsi));
/* If this is the first time we've simulated this block, then we
*************** ssa_prop_init (void)
*** 513,519 ****
for (si = gsi_start_bb (bb); !gsi_end_p (si); gsi_next (&si))
gimple_set_plf (gsi_stmt (si), STMT_IN_SSA_EDGE_WORKLIST, false);
! for (si = gsi_start (phi_nodes (bb)); !gsi_end_p (si); gsi_next (&si))
gimple_set_plf (gsi_stmt (si), STMT_IN_SSA_EDGE_WORKLIST, false);
FOR_EACH_EDGE (e, ei, bb->succs)
--- 513,519 ----
for (si = gsi_start_bb (bb); !gsi_end_p (si); gsi_next (&si))
gimple_set_plf (gsi_stmt (si), STMT_IN_SSA_EDGE_WORKLIST, false);
! for (si = gsi_start_phis (bb); !gsi_end_p (si); gsi_next (&si))
gimple_set_plf (gsi_stmt (si), STMT_IN_SSA_EDGE_WORKLIST, false);
FOR_EACH_EDGE (e, ei, bb->succs)
*************** substitute_and_fold (prop_value_t *prop_
*** 1137,1143 ****
/* Propagate known values into PHI nodes. */
if (prop_value)
! for (i = gsi_start (phi_nodes (bb)); !gsi_end_p (i); gsi_next (&i))
replace_phi_args_in (gsi_stmt (i), prop_value);
for (i = gsi_start_bb (bb); !gsi_end_p (i); gsi_next (&i))
--- 1137,1143 ----
/* Propagate known values into PHI nodes. */
if (prop_value)
! for (i = gsi_start_phis (bb); !gsi_end_p (i); gsi_next (&i))
replace_phi_args_in (gsi_stmt (i), prop_value);
for (i = gsi_start_bb (bb); !gsi_end_p (i); gsi_next (&i))
Index: tree-ssa-alias.c
===================================================================
*** tree-ssa-alias.c (revision 133280)
--- tree-ssa-alias.c (working copy)
*************** dump_points_to_info (FILE *file ATTRIBUT
*** 3408,3414 ****
/* Dump points-to information for every pointer defined in the program. */
FOR_EACH_BB (bb)
{
! for (si = gsi_start (phi_nodes (bb)); !gsi_end_p (si); gsi_next (&si))
{
gimple phi = gsi_stmt (si);
tree ptr = PHI_RESULT (phi);
--- 3408,3414 ----
/* Dump points-to information for every pointer defined in the program. */
FOR_EACH_BB (bb)
{
! for (si = gsi_start_phis (bb); !gsi_end_p (si); gsi_next (&si))
{
gimple phi = gsi_stmt (si);
tree ptr = PHI_RESULT (phi);
*************** create_structure_vars (void)
*** 4063,4069 ****
gimple_stmt_iterator gsi;
gimple phi;
! for (gsi = gsi_start (phi_nodes (bb)); !gsi_end_p (gsi); gsi_next (&gsi))
{
use_operand_p use;
ssa_op_iter iter;
--- 4063,4069 ----
gimple_stmt_iterator gsi;
gimple phi;
! for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi))
{
use_operand_p use;
ssa_op_iter iter;
Index: gimple-iterator.c
===================================================================
*** gimple-iterator.c (revision 133280)
--- gimple-iterator.c (working copy)
*************** gsi_for_stmt (gimple stmt)
*** 513,519 ****
basic_block bb = gimple_bb (stmt);
if (gimple_code (stmt) == GIMPLE_PHI)
! i = gsi_start (phi_nodes (bb));
else
i = gsi_start_bb (bb);
--- 513,519 ----
basic_block bb = gimple_bb (stmt);
if (gimple_code (stmt) == GIMPLE_PHI)
! i = gsi_start_phis (bb);
else
i = gsi_start_bb (bb);
*************** gsi_commit_one_edge_insert (edge e, basi
*** 754,756 ****
--- 754,764 ----
gsi_insert_seq_before (&gsi, seq, GSI_NEW_STMT);
}
}
+
+ /* Returns iterator at the start of the list of phi nodes of BB. */
+
+ gimple_stmt_iterator
+ gsi_start_phis (basic_block bb)
+ {
+ return gsi_start (phi_nodes (bb));
+ }
Index: gimple-pretty-print.c
===================================================================
*** gimple-pretty-print.c (revision 133280)
--- gimple-pretty-print.c (working copy)
*************** dump_phi_nodes (pretty_printer *buffer,
*** 1262,1268 ****
{
gimple_stmt_iterator i;
! for (i = gsi_start (phi_nodes (bb)); !gsi_end_p (i); gsi_next (&i))
{
gimple phi = gsi_stmt (i);
if (is_gimple_reg (gimple_phi_result (phi)) || (flags & TDF_VOPS))
--- 1262,1268 ----
{
gimple_stmt_iterator i;
! for (i = gsi_start_phis (bb); !gsi_end_p (i); gsi_next (&i))
{
gimple phi = gsi_stmt (i);
if (is_gimple_reg (gimple_phi_result (phi)) || (flags & TDF_VOPS))
Index: tree-data-ref.c
===================================================================
*** tree-data-ref.c (revision 133280)
--- tree-data-ref.c (working copy)
*************** stmts_from_loop (struct loop *loop, VEC
*** 4703,4709 ****
gimple_stmt_iterator bsi;
gimple stmt;
! for (bsi = gsi_start (phi_nodes (bb)); !gsi_end_p (bsi); gsi_next (&bsi))
VEC_safe_push (gimple, heap, *stmts, gsi_stmt (bsi));
for (bsi = gsi_start_bb (bb); !gsi_end_p (bsi); gsi_next (&bsi))
--- 4703,4709 ----
gimple_stmt_iterator bsi;
gimple stmt;
! for (bsi = gsi_start_phis (bb); !gsi_end_p (bsi); gsi_next (&bsi))
VEC_safe_push (gimple, heap, *stmts, gsi_stmt (bsi));
for (bsi = gsi_start_bb (bb); !gsi_end_p (bsi); gsi_next (&bsi))
Index: tree-ssa-coalesce.c
===================================================================
*** tree-ssa-coalesce.c (revision 133280)
--- tree-ssa-coalesce.c (working copy)
*************** build_ssa_conflict_graph (tree_live_info
*** 880,886 ****
There must be a conflict recorded between the result of the PHI and
any variables that are live. Otherwise the out-of-ssa translation
may create incorrect code. */
! for (gsi = gsi_start (phi_nodes (bb)); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple phi = gsi_stmt (gsi);
tree result = PHI_RESULT (phi);
--- 880,886 ----
There must be a conflict recorded between the result of the PHI and
any variables that are live. Otherwise the out-of-ssa translation
may create incorrect code. */
! for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple phi = gsi_stmt (gsi);
tree result = PHI_RESULT (phi);
*************** create_outofssa_var_map (coalesce_list_p
*** 984,990 ****
{
tree arg;
! for (gsi = gsi_start (phi_nodes (bb)); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple phi = gsi_stmt (gsi);
size_t i;
--- 984,990 ----
{
tree arg;
! for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple phi = gsi_stmt (gsi);
size_t i;
*************** coalesce_partitions (var_map map, ssa_co
*** 1274,1280 ****
if (e->flags & EDGE_ABNORMAL)
{
gimple_stmt_iterator gsi;
! for (gsi = gsi_start (phi_nodes (bb)); !gsi_end_p (gsi);
gsi_next (&gsi))
{
gimple phi = gsi_stmt (gsi);
--- 1274,1280 ----
if (e->flags & EDGE_ABNORMAL)
{
gimple_stmt_iterator gsi;
! for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi);
gsi_next (&gsi))
{
gimple phi = gsi_stmt (gsi);
Index: tree-dfa.c
===================================================================
*** tree-dfa.c (revision 133280)
--- tree-dfa.c (working copy)
*************** collect_dfa_stats (struct dfa_stats_d *d
*** 534,540 ****
{
gimple_stmt_iterator si;
! for (si = gsi_start (phi_nodes (bb)); !gsi_end_p (si); gsi_next (&si))
{
gimple phi = gsi_stmt (si);
dfa_stats_p->num_phis++;
--- 534,540 ----
{
gimple_stmt_iterator si;
! for (si = gsi_start_phis (bb); !gsi_end_p (si); gsi_next (&si))
{
gimple phi = gsi_stmt (si);
dfa_stats_p->num_phis++;
Index: tree-cfgcleanup.c
===================================================================
*** tree-cfgcleanup.c (revision 133280)
--- tree-cfgcleanup.c (working copy)
*************** phi_alternatives_equal (basic_block dest
*** 318,324 ****
int n2 = e2->dest_idx;
gimple_stmt_iterator gsi;
! for (gsi = gsi_start (phi_nodes (dest)); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple phi = gsi_stmt (gsi);
tree val1 = gimple_phi_arg_def (phi, n1);
--- 318,324 ----
int n2 = e2->dest_idx;
gimple_stmt_iterator gsi;
! for (gsi = gsi_start_phis (dest); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple phi = gsi_stmt (gsi);
tree val1 = gimple_phi_arg_def (phi, n1);
*************** remove_forwarder_block (basic_block bb)
*** 414,420 ****
{
/* Create arguments for the phi nodes, since the edge was not
here before. */
! for (gsi = gsi_start (phi_nodes (dest));
!gsi_end_p (gsi);
gsi_next (&gsi))
{
--- 414,420 ----
{
/* Create arguments for the phi nodes, since the edge was not
here before. */
! for (gsi = gsi_start_phis (dest);
!gsi_end_p (gsi);
gsi_next (&gsi))
{
*************** remove_forwarder_block_with_phi (basic_b
*** 752,758 ****
/* Add to the PHI nodes at DEST each PHI argument removed at the
destination of E. */
! for (gsi = gsi_start (phi_nodes (dest));
!gsi_end_p (gsi);
gsi_next (&gsi))
{
--- 752,758 ----
/* Add to the PHI nodes at DEST each PHI argument removed at the
destination of E. */
! for (gsi = gsi_start_phis (dest);
!gsi_end_p (gsi);
gsi_next (&gsi))
{
*************** merge_phi_nodes (void)
*** 877,883 ****
can handle. If the result of every PHI in BB is used
only by a PHI in DEST, then we can trivially merge the
PHI nodes from BB into DEST. */
! for (gsi = gsi_start (phi_nodes (bb)); !gsi_end_p (gsi);
gsi_next (&gsi))
{
gimple phi = gsi_stmt (gsi);
--- 877,883 ----
can handle. If the result of every PHI in BB is used
only by a PHI in DEST, then we can trivially merge the
PHI nodes from BB into DEST. */
! for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi);
gsi_next (&gsi))
{
gimple phi = gsi_stmt (gsi);
Index: tree-ssa-live.c
===================================================================
*** tree-ssa-live.c (revision 133280)
--- tree-ssa-live.c (working copy)
*************** remove_unused_locals (void)
*** 597,603 ****
for (i = 0; i < gimple_num_ops (gsi_stmt (gsi)); i++)
mark_all_vars_used (gimple_op_ptr (gsi_stmt (gsi), i), NULL);
! for (gsi = gsi_start (phi_nodes (bb)); !gsi_end_p (gsi); gsi_next (&gsi))
{
use_operand_p arg_p;
ssa_op_iter i;
--- 597,603 ----
for (i = 0; i < gimple_num_ops (gsi_stmt (gsi)); i++)
mark_all_vars_used (gimple_op_ptr (gsi_stmt (gsi), i), NULL);
! for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi))
{
use_operand_p arg_p;
ssa_op_iter i;
*************** calculate_live_on_exit (tree_live_info_p
*** 904,910 ****
size_t i;
/* Mark the PHI arguments which are live on exit to the pred block. */
! for (gsi = gsi_start (phi_nodes (bb)); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple phi = gsi_stmt (gsi);
for (i = 0; i < gimple_phi_num_args (phi); i++)
--- 904,910 ----
size_t i;
/* Mark the PHI arguments which are live on exit to the pred block. */
! for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple phi = gsi_stmt (gsi);
for (i = 0; i < gimple_phi_num_args (phi); i++)
*************** verify_live_on_entry (tree_live_info_p l
*** 1141,1147 ****
size_t z;
bool ok = false;
gimple_stmt_iterator gsi;
! for (gsi = gsi_start (phi_nodes (e->dest));
!gsi_end_p (gsi) && !ok;
gsi_next (&gsi))
{
--- 1141,1147 ----
size_t z;
bool ok = false;
gimple_stmt_iterator gsi;
! for (gsi = gsi_start_phis (e->dest);
!gsi_end_p (gsi) && !ok;
gsi_next (&gsi))
{
Index: tree-ssa.c
===================================================================
*** tree-ssa.c (revision 133280)
--- tree-ssa.c (working copy)
*************** ssa_redirect_edge (edge e, basic_block d
*** 177,183 ****
redirect_edge_var_map_clear (e);
/* Remove the appropriate PHI arguments in E's destination block. */
! for (gsi = gsi_start (phi_nodes (e->dest)); !gsi_end_p (gsi); gsi_next (&gsi))
{
tree def;
--- 177,183 ----
redirect_edge_var_map_clear (e);
/* Remove the appropriate PHI arguments in E's destination block. */
! for (gsi = gsi_start_phis (e->dest); !gsi_end_p (gsi); gsi_next (&gsi))
{
tree def;
*************** flush_pending_stmts (edge e)
*** 212,218 ****
if (!v)
return;
! for (gsi = gsi_start (phi_nodes (e->dest)), i = 0;
!gsi_end_p (gsi) && VEC_iterate (edge_var_map, v, i, vm);
gsi_next (&gsi), i++)
{
--- 212,218 ----
if (!v)
return;
! for (gsi = gsi_start_phis (e->dest), i = 0;
!gsi_end_p (gsi) && VEC_iterate (edge_var_map, v, i, vm);
gsi_next (&gsi), i++)
{
*************** verify_ssa (bool check_modified_stmt)
*** 786,792 ****
}
/* Verify the arguments for every PHI node in the block. */
! for (gsi = gsi_start (phi_nodes (bb)); !gsi_end_p (gsi); gsi_next (&gsi))
{
phi = gsi_stmt (gsi);
if (verify_phi_args (phi, bb, definition_block))
--- 786,792 ----
}
/* Verify the arguments for every PHI node in the block. */
! for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi))
{
phi = gsi_stmt (gsi);
if (verify_phi_args (phi, bb, definition_block))
*************** execute_late_warn_uninitialized (void)
*** 1532,1538 ****
execute_early_warn_uninitialized ();
FOR_EACH_BB (bb)
! for (gsi = gsi_start (phi_nodes (bb)); !gsi_end_p (gsi); gsi_next (&gsi))
warn_uninitialized_phi (gsi_stmt (gsi));
return 0;
--- 1532,1538 ----
execute_early_warn_uninitialized ();
FOR_EACH_BB (bb)
! for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi))
warn_uninitialized_phi (gsi_stmt (gsi));
return 0;
*************** execute_update_addresses_taken (void)
*** 1602,1608 ****
bitmap_ior_into (addresses_taken, taken);
}
! for (gsi = gsi_start (phi_nodes (bb)); !gsi_end_p (gsi); gsi_next (&gsi))
{
size_t i;
gimple phi = gsi_stmt (gsi);
--- 1602,1608 ----
bitmap_ior_into (addresses_taken, taken);
}
! for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi))
{
size_t i;
gimple phi = gsi_stmt (gsi);
Index: tree-outof-ssa.c
===================================================================
*** tree-outof-ssa.c (revision 133280)
--- tree-outof-ssa.c (working copy)
*************** eliminate_build (elim_graph g, basic_blo
*** 318,324 ****
clear_elim_graph (g);
! for (gsi = gsi_start (phi_nodes (B)); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple phi = gsi_stmt (gsi);
--- 318,324 ----
clear_elim_graph (g);
! for (gsi = gsi_start_phis (B); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple phi = gsi_stmt (gsi);
*************** eliminate_virtual_phis (void)
*** 617,623 ****
FOR_EACH_BB (bb)
{
! for (gsi = gsi_start (phi_nodes (bb)); !gsi_end_p (gsi); )
{
gimple phi = gsi_stmt (gsi);
if (!is_gimple_reg (SSA_NAME_VAR (gimple_phi_result (phi))))
--- 617,623 ----
FOR_EACH_BB (bb)
{
! for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); )
{
gimple phi = gsi_stmt (gsi);
if (!is_gimple_reg (SSA_NAME_VAR (gimple_phi_result (phi))))
*************** rewrite_trees (var_map map, tree *values
*** 671,677 ****
create incorrect code. */
FOR_EACH_BB (bb)
{
! for (gsi = gsi_start (phi_nodes (bb)); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple phi = gsi_stmt (gsi);
tree T0 = var_to_partition_to_var (map, gimple_phi_result (phi));
--- 671,677 ----
create incorrect code. */
FOR_EACH_BB (bb)
{
! for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple phi = gsi_stmt (gsi);
tree T0 = var_to_partition_to_var (map, gimple_phi_result (phi));
*************** remove_ssa_form (bool perform_ter)
*** 1339,1345 ****
/* Remove PHI nodes which have been translated back to real variables. */
FOR_EACH_BB (bb)
! for (gsi = gsi_start (phi_nodes (bb)); !gsi_end_p (gsi);)
remove_phi_node (&gsi, true);
/* If any copies were inserted on edges, analyze and insert them now. */
--- 1339,1345 ----
/* Remove PHI nodes which have been translated back to real variables. */
FOR_EACH_BB (bb)
! for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi);)
remove_phi_node (&gsi, true);
/* If any copies were inserted on edges, analyze and insert them now. */
*************** insert_backedge_copies (void)
*** 1366,1372 ****
FOR_EACH_BB (bb)
{
! for (gsi = gsi_start (phi_nodes (bb)); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple phi = gsi_stmt (gsi);
tree result = gimple_phi_result (phi);
--- 1366,1372 ----
FOR_EACH_BB (bb)
{
! for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple phi = gsi_stmt (gsi);
tree result = gimple_phi_result (phi);
Index: cfgloop.c
===================================================================
*** cfgloop.c (revision 133280)
--- cfgloop.c (working copy)
*************** find_subloop_latch_edge_by_ivs (struct l
*** 567,577 ****
{
edge e, latch = VEC_index (edge, latches, 0);
unsigned i;
! /* FIXME tuples. */
! #if 0
! tree phi, lop;
basic_block bb;
- #endif
/* Find the candidate for the latch edge. */
for (i = 1; VEC_iterate (edge, latches, i, e); i++)
--- 567,576 ----
{
edge e, latch = VEC_index (edge, latches, 0);
unsigned i;
! gimple phi;
! gimple_stmt_iterator psi;
! tree lop;
basic_block bb;
/* Find the candidate for the latch edge. */
for (i = 1; VEC_iterate (edge, latches, i, e); i++)
*************** find_subloop_latch_edge_by_ivs (struct l
*** 585,594 ****
/* Check for a phi node that would deny that this is a latch edge of
a subloop. */
! /* FIXME tuples. */
! #if 0
! for (phi = phi_nodes (loop->header); phi; phi = PHI_CHAIN (phi))
{
lop = PHI_ARG_DEF_FROM_EDGE (phi, latch);
/* Ignore the values that are not changed inside the subloop. */
--- 584,592 ----
/* Check for a phi node that would deny that this is a latch edge of
a subloop. */
! for (psi = gsi_start_phis (loop->header); !gsi_end_p (psi); gsi_next (&psi))
{
+ phi = gsi_stmt (psi);
lop = PHI_ARG_DEF_FROM_EDGE (phi, latch);
/* Ignore the values that are not changed inside the subloop. */
*************** find_subloop_latch_edge_by_ivs (struct l
*** 604,612 ****
&& PHI_ARG_DEF_FROM_EDGE (phi, e) == lop)
return NULL;
}
- #else
- gimple_unreachable ();
- #endif
if (dump_file)
fprintf (dump_file,
--- 602,607 ----
Index: tree-ssa-structalias.c
===================================================================
*** tree-ssa-structalias.c (revision 133280)
--- tree-ssa-structalias.c (working copy)
*************** compute_points_to_sets (struct alias_inf
*** 5356,5362 ****
{
gimple_stmt_iterator gsi;
! for (gsi = gsi_start (phi_nodes (bb)); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple phi = gsi_stmt (gsi);
--- 5356,5362 ----
{
gimple_stmt_iterator gsi;
! for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple phi = gsi_stmt (gsi);
*************** ipa_pta_execute (void)
*** 5542,5548 ****
{
gimple_stmt_iterator gsi;
! for (gsi = gsi_start (phi_nodes (bb)); !gsi_end_p (gsi);
gsi_next (&gsi))
{
gimple phi = gsi_stmt (gsi);
--- 5542,5548 ----
{
gimple_stmt_iterator gsi;
! for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi);
gsi_next (&gsi))
{
gimple phi = gsi_stmt (gsi);
Index: gimple.h
===================================================================
*** gimple.h (revision 133281)
--- gimple.h (working copy)
*************** enum gsi_iterator_update
*** 3036,3041 ****
--- 3036,3042 ----
};
/* In gimple-iterator.c */
+ gimple_stmt_iterator gsi_start_phis (basic_block);
gimple_seq gsi_split_seq_after (gimple_stmt_iterator);
gimple_seq gsi_split_seq_before (gimple_stmt_iterator *);
void gsi_replace (gimple_stmt_iterator *, gimple, bool);
Index: tree-cfg.c
===================================================================
*** tree-cfg.c (revision 133280)
--- tree-cfg.c (working copy)
*************** remove_phi_nodes_and_edges_for_unreachab
*** 2067,2073 ****
/* Since this block is no longer reachable, we can just delete all
of its PHI nodes. */
! for (gsi = gsi_start (phi_nodes (bb)); !gsi_end_p (gsi); )
remove_phi_node (&gsi, true);
set_phi_nodes (bb, NULL);
--- 2067,2073 ----
/* Since this block is no longer reachable, we can just delete all
of its PHI nodes. */
! for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); )
remove_phi_node (&gsi, true);
set_phi_nodes (bb, NULL);
*************** reinstall_phi_args (edge new_edge, edge
*** 2740,2746 ****
if (!v)
return;
! for (i = 0, phis = gsi_start (phi_nodes (new_edge->dest));
VEC_iterate (edge_var_map, v, i, vm) && !gsi_end_p (phis);
i++, gsi_next (&phis))
{
--- 2740,2746 ----
if (!v)
return;
! for (i = 0, phis = gsi_start_phis (new_edge->dest);
VEC_iterate (edge_var_map, v, i, vm) && !gsi_end_p (phis);
i++, gsi_next (&phis))
{
*************** verify_stmts (void)
*** 3966,3972 ****
gimple phi;
size_t i;
! for (gsi = gsi_start (phi_nodes (bb)); !gsi_end_p (gsi); gsi_next (&gsi))
{
phi = gsi_stmt (gsi);
pointer_set_insert (visited_stmts, phi);
--- 3966,3972 ----
gimple phi;
size_t i;
! for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi))
{
phi = gsi_stmt (gsi);
pointer_set_insert (visited_stmts, phi);
*************** gimple_make_forwarder_block (edge fallth
*** 4379,4385 ****
/* If we redirected a branch we must create new PHI nodes at the
start of BB. */
! for (gsi = gsi_start (phi_nodes (dummy)); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple phi, new_phi;
--- 4379,4385 ----
/* If we redirected a branch we must create new PHI nodes at the
start of BB. */
! for (gsi = gsi_start_phis (dummy); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple phi, new_phi;
*************** add_phi_args_after_copy_edge (edge e_cop
*** 4777,4784 ****
gcc_assert (e != NULL);
}
! for (psi = gsi_start (phi_nodes (e->dest)),
! psi_copy = gsi_start (phi_nodes (e_copy->dest));
!gsi_end_p (psi);
gsi_next (&psi), gsi_next (&psi_copy))
{
--- 4777,4784 ----
gcc_assert (e != NULL);
}
! for (psi = gsi_start_phis (e->dest),
! psi_copy = gsi_start_phis (e_copy->dest);
!gsi_end_p (psi);
gsi_next (&psi), gsi_next (&psi_copy))
{
*************** gimple_lv_adjust_loop_header_phi (basic_
*** 6514,6521 ****
/* Browse all 'second' basic block phi nodes and add phi args to
edge 'e' for 'first' head. PHI args are always in correct order. */
! for (psi2 = gsi_start (phi_nodes (second)),
! psi1 = gsi_start (phi_nodes (first));
!gsi_end_p (psi2) && !gsi_end_p (psi1);
gsi_next (&psi2), gsi_next (&psi1))
{
--- 6514,6521 ----
/* Browse all 'second' basic block phi nodes and add phi args to
edge 'e' for 'first' head. PHI args are always in correct order. */
! for (psi2 = gsi_start_phis (second),
! psi1 = gsi_start_phis (first);
!gsi_end_p (psi2) && !gsi_end_p (psi1);
gsi_next (&psi2), gsi_next (&psi1))
{