diff options
author | Zdenek Dvorak <dvorakz@suse.cz> | 2006-02-05 21:14:59 +0100 |
---|---|---|
committer | Zdenek Dvorak <rakdver@gcc.gnu.org> | 2006-02-05 20:14:59 +0000 |
commit | d78f3f787f098ce3c535883b1ba47c3b1820b983 (patch) | |
tree | f9c43362e6fd6ea70ca28c6eb34ce8db0d770637 /gcc/loop-init.c | |
parent | efb0828de397e990ed58d9429e4f70cd4694b718 (diff) | |
download | gcc-d78f3f787f098ce3c535883b1ba47c3b1820b983.zip gcc-d78f3f787f098ce3c535883b1ba47c3b1820b983.tar.gz gcc-d78f3f787f098ce3c535883b1ba47c3b1820b983.tar.bz2 |
tree-vrp.c (cfg_loops): Removed.
* tree-vrp.c (cfg_loops): Removed.
(adjust_range_with_scev, vrp_visit_assignment, execute_vrp):
Use current_loops instead of cfg_loops. Pass flags to
loop_optimizer_init.
* cfgloopmanip.c (fix_loop_structure): Update only available
information.
* tree-ssa-loop-ch.c (copy_loop_headers): Pass flags to
loop_optimizer_init.
* modulo-sched.c (build_loops_structure): Removed.
(sms_schedule): Use loop_optimizer_init.
* loop-init.c (loop_optimizer_init): Use flags to determine
which properties of loops to prepare.
(rtl_loop_init): Pass flags to loop_optimizer_init.
* tree-ssa-sink.c (execute_sink_code): Ditto.
* tree-ssa-loop.c (tree_loop_optimizer_init): Ditto.
* tree-ssa-pre.c (init_pre): Ditto.
* cfgloop.h (LOOPS_NORMAL): New.
(loop_optimizer_init): Declaration changed.
From-SVN: r110620
Diffstat (limited to 'gcc/loop-init.c')
-rw-r--r-- | gcc/loop-init.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/gcc/loop-init.c b/gcc/loop-init.c index d44575b..d6c3703 100644 --- a/gcc/loop-init.c +++ b/gcc/loop-init.c @@ -34,10 +34,11 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA /* Initialize loop optimizer. This is used by the tree and RTL loop - optimizers. */ + optimizers. FLAGS specify what properties to compute and/or ensure for + loops. */ struct loops * -loop_optimizer_init (FILE *dumpfile) +loop_optimizer_init (FILE *dumpfile, unsigned flags) { struct loops *loops = XCNEW (struct loops); edge e; @@ -77,13 +78,19 @@ loop_optimizer_init (FILE *dumpfile) loops->cfg.dfs_order = NULL; /* Create pre-headers. */ - create_preheaders (loops, CP_SIMPLE_PREHEADERS); + if (flags & LOOPS_HAVE_PREHEADERS) + create_preheaders (loops, CP_SIMPLE_PREHEADERS); /* Force all latches to have only single successor. */ - force_single_succ_latches (loops); + if (flags & LOOPS_HAVE_SIMPLE_LATCHES) + force_single_succ_latches (loops); /* Mark irreducible loops. */ - mark_irreducible_loops (loops); + if (flags & LOOPS_HAVE_MARKED_IRREDUCIBLE_REGIONS) + mark_irreducible_loops (loops); + + if (flags & LOOPS_HAVE_MARKED_SINGLE_EXITS) + mark_single_exit_loops (loops); /* Dump loops. */ flow_loops_dump (loops, dumpfile, NULL, 1); @@ -166,7 +173,7 @@ rtl_loop_init (void) /* Initialize structures for layout changes. */ cfg_layout_initialize (0); - current_loops = loop_optimizer_init (dump_file); + current_loops = loop_optimizer_init (dump_file, LOOPS_NORMAL); } struct tree_opt_pass pass_rtl_loop_init = |