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]

Re: [CFG] Loop represenation & new loop optimizer works


> Hello.
> 
> Here is the patch with changes you wanted.
> 
> Zdenek Dvorak
> 
> Changelog:
> 
> 	* Makefile.in (OBJS): Add loop-new.o.
> 	(function.o, reg-stack.o, bb-reorder.o, tracer.o):
> 	Add dependency on basic-block.h.
> 	(loop-new.o): New.
> 	* basic-block.h (basic_block, struct loop, struct loops):
> 	Change loop representation.
> 	(flow_loop_outside_edge_p):
> 	Changed declaration.
> 	(flow_loop_tree_node_add): Declare.
> 	(LOOP_EXITS_DOMS): Removed (not used anywhere and hard to maintain
> 	just now).
> 	(flow_loop_outside_edge_p, flow_bb_inside_loop_p,
> 	get_loop_body, dfs_enumerate_from, add_bb_to_loop,
> 	remove_bb_from_loops, find_common_loop, create_preheader):
> 	Declare.
> 	(nearest_common_dominator, set_immediate_dominator,
> 	get_immediate_dominator, dominated_by_p,
> 	get_dominated_by, verify_dominators):
> 	Declare.
> 	* bb-reorder.c (reorder_basic_blocks): Modified.
> 	* cfg.c (entry_exit_blocks): Initialize new fields.
> 	(dump_flow_info): Modified.
> 	* cfganal.c (dfs_enumerate_from): New.
> 	* cfgbuild.c (find_basic_blocks): Zero liveness info;
> 	should be done cleaner way later.
> 	* cfglayout.c (cleanup_unconditional_jumps,
> 	cfg_layout_duplicate_bb, cfg_layout_initialize):
> 	Update loop structure.
> 	* cfglayout.h (reorder_block_def): Support for loop copying.
> 	(cfg_layout_initialize): Declaration modified.
> 	* cfgloop.c (flow_loop_nested_p, flow_loop_entry_edges_find,
> 	flow_loop_exit_edges_find, flow_loop_pre_header_scan,
> 	flow_loops_cfg_dump, flow_loops_free,
> 	flow_loop_pre_header_find, flow_loop_scan):
> 	Adapted for new loop represenation.
> 	(flow_loop_nodes_find, flow_loop_tree_node_add,
> 	flow_loops_tree_build, flow_loop_level_compute):
> 	Reworked to create new loop representation.
> 	(make_forwarder_block, canonicalize_loop_headers): New static
> 	functions.
> 	* cfgloopanal.c (for_each_insn_in_loop,
> 	not_invariant_rtx, test_invariants):
> 	Adapted for new loop represenation.
> 	(create_preheader): New.
> 	* loop.h (loop_optimizer_init, loop_optimizer_finalize):
> 	New loop optimizer interface declaration.
> 	* predict.c (estimate_loops_at_level, propagate_freq,
> 	estimate_probability, estimate_bb_frequencies):
> 	Adapted for new loop representation.
> 	* toplev.c (rest_of_compilation): Prepare for
> 	new loop optimizer.
> 	* tracer.c (tracer): Modified.
> 	* loop-new.c: New file.
> 	(get_immediate_dominator, set_immediate_dominator,
> 	get_dominated_by, nearest_common_dominator,
> 	dominated_by_p, verify_dominators, recount_dominator):
> 	Stupid dominator handling. Should be replaced soon.
> 	(loop_optimizer_init, loop_optimizer_finalize):
> 	New loop optimizer interface.

Looks OK now except the memory leak in make_forwarder_block in allocating aux
field I will fix during applying the patch.

Honza


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