[tuples] gsi_start_phis

Zdenek Dvorak rakdver@kam.mff.cuni.cz
Mon Mar 17 06:50:00 GMT 2008


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))
      {



More information about the Gcc-patches mailing list