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: Patch to move superblock formation to Tree-SSA



On Sep 23, 2005, at 3:48 PM, Robert Kidd wrote:


gcc/ChangeLog
2005-09-20  Robert Kidd  <rkidd@crhc.uiuc.edu>

    * basic-block.h: Added tree_bb_info struct, BB_TREE enum to
    bb_flags.  Changed BB_FORWARDER_BLOCK and BB_NONTHREADABLE_BLOCK
    so BB_TREE follows BB_RTL.
    * bb-reorder.c: (rest_of_handle_reorder_blocks) Removed call to
    tracer.
    * cfgepxand.c: (expand_basic_block) Replaced call to
    init_rtl_bb_info with conv_tree_to_rtl_bb_info.
    * cfgrtl.c: (conv_tree_to_rtl_bb_info) New function.
    * passes.c: (init_optimization_pass) Moved pass_tracer up to
    immediatly following pass_build_ssa.
    * rtl.h: Removed prototype for tracer.
    * tracer.c: Removed layout_superblocks.
    (seen): Set il.tree->visited instead of il.rtl->visited
    (count_insns): Use the number of statements to approximate number
    of insns.
    (tail_duplicate): Fix up phi nodes.
    (tracer): Removed function argument, rtl cfg cleanup passes.
    (rest_of_handle_tracer): Removed argument to tracer.
    (pass_tracer): Add TODO_update_ssa and TODO_verify_ssa to
    todo_flags_finish.
    * tree-cfg.c: (init_tree_bb_info) New function.
    (create_bb): Add call to init_tree_bb_info.

A couple questions/comments about the patch.


First why are you are you adding to basic_block_il_dependent when you
could just set aux and not worry about visited in il.tree and if you are
going to add il.tree, you may as well also move phi_nodes and stmt_list
there too.  Maybe rename visited to trace will be more helpful.

Since you are moving this from rtl to tree, you should remove the -dT. You
already removed the documentation about it.


This looks wrong:
!       || (flag_sched2_use_traces && flag_schedule_insns_after_reload))
---
!       || (flag_schedule_insns_after_reload))


Since flag_sched2_use_traces is always false now or is it always true.


why do you leave the following:
    if (dump_file)
      dump_flow_info (dump_file);

reg_scan (get_insns (), max_reg_num ());

Both of those are rtl only. Also you removed cleanup cfg, shouldn't you have added
the TODO for cleanup cfg then?


You should also change the properties required to include SSA form so that we can
reorder and get an ICE early on.
I also don't think you need the flag for tree on basic blocks, because if it is not
a rtl basic block, it will be a tree basic block.


Seems to me you are also doing tracer too early in

-- Pinski


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