This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

gphi_iterator? (was Re: [PATCH 09/89] Introduce gimple_phi_iterator)


On Fri, 2014-05-09 at 12:51 -0600, Jeff Law wrote:
> On 04/21/14 10:56, David Malcolm wrote:
> > gcc/
> > 	* gimple-iterator.h (struct gimple_phi_iterator): New subclass of
> > 	gimple_stmt_iterator with identical layout, but adding...
> > 	(gimple_phi_iterator::phi): ...new method, equivalent to
> > 	gsi_stmt (), but casting the underlying gimple to gimple_phi,
> > 	checking that code == GIMPLE_PHI in a checked build.
> > 	(gsi_start_phis): Return a gimple_phi_iterator, rather than just a
> > 	gimple_stmt_iterator.
> >
> > 	* tree-if-conv.c (bb_with_exit_edge_p): Require a gimple_phi rather
> > 	than just a gimple.
> > 	(if_convertible_phi_p): Likewise.
> > 	* tree-phinodes.h (add_phi_node_to_bb): Likewise.
> > 	* tree-ssa-phiprop.c (propagate_with_phi): Likewise.
> >
> > 	* tree-ssa-uninit.c (warn_uninitialized_phi): Require a gimple_phi
> > 	and a vec<gimple_phi> *, rather than just a gimple and vec<gimple> *.
> > 	(find_uninit_use): Likewise; add checked cast to gimple_phi when
> > 	adding to worklist.
> > 	(execute_late_warn_uninitialized): Strengthen types of various locals,
> > 	"worklist" from vec<gimple> to vec<gimple_phi>, "gsi" to a
> > 	gimple_phi_iterator, and "phi" and "cur_phi" to a gimple_phi.
> >
> > 	* tree-ssa-loop-manip.c (rewrite_phi_with_iv): Require a
> > 	gimple_phi_iterator * rather than a gimple_stmt_iterator *;
> > 	use it to strengthen local from a gimple to a gimple_phi.
> >
> > 	* cfgloop.c (find_subloop_latch_edge_by_ivs): Convert local from a
> > 	gimple_stmt_iterator to a gimple_phi_iterator.  Use the iterator's
> > 	"phi" method rather than gsi_stmt.  Use this checked cast to convert
> > 	the type of related local from a plain gimple to a gimple_phi.
> > 	* gimple-pretty-print.c (dump_phi_nodes): Likewise.
> > 	* gimple-ssa-isolate-paths.c (find_implicit_erroneous_behaviour):
> > 	Likewise.
> > 	* sese.c (sese_add_exit_phis_edge): Likewise.
> > 	* tree-cfg.c (reinstall_phi_args): Likewise.
> > 	(gimple_make_forwarder_block): Likewise.
> > 	(add_phi_args_after_copy_edge): Likewise.
> > 	(gimple_lv_adjust_loop_header_phi): Likewise.
> > 	* tree-cfgcleanup.c (phi_alternatives_equal): Likewise.
> > 	(remove_forwarder_block_with_phi): Likewise.
> > 	(merge_phi_nodes): Likewise.
> > 	* tree-complex.c (update_phi_components): Likewise.
> > 	* tree-if-conv.c (if_convertible_loop_p_1): Likewise.
> > 	* tree-inline.c (update_ssa_across_abnormal_edges): Likewise.
> > 	(copy_phis_for_bb): Likewise.
> > 	* tree-into-ssa.c (rewrite_add_phi_arguments): Likewise.
> > 	* tree-outof-ssa.c (eliminate_build): Likewise.
> > 	(eliminate_useless_phis): Likewise.
> > 	(rewrite_trees): Likewise.
> > 	(insert_backedge_copies): Likewise.
> > 	* tree-phinodes.c (reserve_phi_args_for_new_edge): Likewise.
> > 	(remove_phi_args): Likewise.
> > 	(remove_phi_nodes): Likewise.
> > 	* tree-predcom.c (find_looparound_phi): Likewise.
> > 	(eliminate_temp_copies): Likewise.
> > 	* tree-scalar-evolution.c (loop_closed_phi_def): Likewise.
> > 	(scev_const_prop): Likewise; also, add checked cast to phi.
> > 	* tree-ssa-coalesce.c (coalesce_partitions): Likewise.
> > 	* tree-ssa-dce.c (remove_dead_phis): Likewise.
> > 	(forward_edge_to_pdom): Likewise.
> > 	* tree-ssa-dom.c (record_equivalences_from_phis): Likewise.
> > 	(cprop_into_successor_phis): Likewise.
> > 	(propagate_rhs_into_lhs): Likewise.
> > 	(eliminate_degenerate_phis_1): Likewise.
> > 	* tree-ssa-ifcombine.c (same_phi_args_p): Likewise.
> > 	* tree-ssa-live.c (calculate_live_on_exit): Likewise.
> > 	(verify_live_on_entry): Likewise.
> > 	* tree-ssa-loop-im.c
> > 	(move_computations_dom_walker::before_dom_children): Likewise.
> > 	* tree-ssa-loop-ivopts.c (find_bivs): Likewise.
> > 	(mark_bivs): Likewise.
> > 	(find_interesting_uses_outside): Likewise.
> > 	(determine_set_costs): Likewise.
> > 	* tree-ssa-loop-manip.c (split_loop_exit_edge): Likewise.
> > 	(tree_transform_and_unroll_loop): Likewise.
> > 	(rewrite_all_phi_nodes_with_iv): Likewise.
> > 	(canonicalize_loop_ivs): Likewise.
> > 	* tree-ssa-loop-niter.c (determine_value_range): Likewise.
> > 	* tree-ssa-phiopt.c (hoist_adjacent_loads): Likewise.
> > 	* tree-ssa-phiprop.c (tree_ssa_phiprop): Likewise.
> > 	* tree-ssa-reassoc.c (suitable_cond_bb): Likewise.
> > 	* tree-ssa-tail-merge.c (same_phi_alternatives_1): Likewise.
> > 	(vop_phi): Likewise.
> > 	* tree-ssa-threadedge.c (record_temporary_equivalences_from_phis):
> > 	Likewise.
> > 	* tree-ssa-threadupdate.c (copy_phi_arg_into_existing_phi): Likewise.
> > 	(copy_phi_args): Likewise.
> > 	(phi_args_equal_on_edges): Likewise.
> > 	* tree-ssa.c (ssa_redirect_edge): Likewise.
> > 	(flush_pending_stmts): Likewise.
> > 	* tree-switch-conversion.c (check_final_bb): Likewise.
> > 	(gather_default_values): Likewise.
> > 	(build_constructors): Likewise.
> > 	(fix_phi_nodes): Likewise.
> > 	* tree-tailcall.c (propagate_through_phis): Likewise.
> > 	(add_successor_phi_arg): Likewise.
> > 	* tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1):
> > 	Likewise.
> > 	(slpeel_update_phi_nodes_for_guard2): Likewise.
> > 	(slpeel_tree_peel_loop_to_edge): Likewise.
> > 	(vect_can_advance_ivs_p): Likewise.
> > 	(vect_update_ivs_after_vectorizer): Likewise.
> > 	* tree-vect-loop.c (vect_analyze_scalar_cycles_1): Likewise.
> > 	* tree-vrp.c (find_assert_locations): Likewise.
> > 	* value-prof.c (gimple_ic): Likewise.
> >
> > 	* omp-low.c (expand_parallel_call): Convert local to a gimple_phi.
> OK once prerequisites have gone in.
> 
Thanks.

I'm working my way through the patches, converting them to the latest
approach, where "gimple_phi" becomes "gphi *".

Given that renaming, it occurred to me that the new class
"gimple_phi_iterator" would be better named as
"gphi_iterator" (consistency, and less typing). 

Is this renaming OK?  (I wasn't planning to rename the pre-existing
gimple_stmt_iterator)



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]