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]

[patch] Share loop version between tree-cfg and cfglayout. (SMSimprovements 1/n)





The following patch is part of the changes mention in 4.1
projects as part of SMS improvements.  It moves SMS to work
in cfg-layout mode.  It is the first patch of several that improve
SMS and make it applicable to more loops.  The patch makes
the current loop versioning also available in RTL by making it
a cfghook.

This patch has wide changes and moves functions between several
files, but it couldn't be divided to several patches.

I am testing this patch by bootstrap with -funswitch-loops because
the later  uses the previous tree loop-versioning it should test that
it wasn't affected. The testing of the RTL part will be made when the
other patches for SMS will be sent.

Ok for mainline if bootstrap & regression passes.

2005-03-02 Mostafa Hagog <mustafa@il.ibm.com>

      * basic-block.h (extract_true_false_edges_from_block): Declare.
      * cfg.c (extract_true_false_edges_from_block): Move to here.
      * cfghooks.c (lv_flush_pending_stmts, loop_version_call_back):
      new.
      * cfghooks.h (loop_version_call_back, flush_pending_stmts): New
      in cfg_hooks.
      (lv_flush_pending_stmts, loop_version_call_back): Declare.
      * cfgloop.h (create_preheader): Make extern.
      (duplicate_loop_to_header_edge): Change return type to bool.
      (loop_version): Declare.
      * cfgloopmanip.c (cfghooks.h): Include.
      (duplicate_loop_to_header_edge): Change return type to bool.
      (create_preheader): Make external.
      (loop_version): Move here.
      * cfgrtl.c (cfgloop.h): Include.
      (rtl_verify_flow_info_1): Fix.
      (rtl_lv_add_condition_to_bb, rtl_lv_adjust_loop_entry_edge,
      rtl_loop_version_call_back): New.
      (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add two new hooks.
      * tree-cfg.c (lv_adjust_loop_header_phi,
      tree_lv_add_condition_to_bb, tree_lv_adjust_loop_entry_edge):
      Move here and rename.
      (tree_loop_version_call_back): New.
      (tree_cfg_hooks): Add two new hooks.
      (extract_true_false_edges_from_block): Remove from here.
      * tree-flow.h (extract_true_false_edges_from_block): Remove from
      here.
      * tree-ssa-loop-manip.c (lv_adjust_loop_header_phi,
      lv_adjust_loop_entry_edge, tree_ssa_loop_version): Remove from
      here.

(See attached file: loop_version_hook_4.patch)

Attachment: loop_version_hook_4.patch
Description: Binary data


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