summaryrefslogtreecommitdiff
path: root/gcc/modulo-sched.c
diff options
context:
space:
mode:
authorrakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4>2006-02-05 20:14:59 +0000
committerrakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4>2006-02-05 20:14:59 +0000
commitc8d055f657b3a033072fca9dc9501bffd927b04d (patch)
treef9c43362e6fd6ea70ca28c6eb34ce8db0d770637 /gcc/modulo-sched.c
parentdd7622e6d3b955a40e1b8e7973dfedfa57dad5e6 (diff)
downloadgcc-c8d055f657b3a033072fca9dc9501bffd927b04d.tar.gz
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@110620 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/modulo-sched.c')
-rw-r--r--gcc/modulo-sched.c43
1 files changed, 3 insertions, 40 deletions
diff --git a/gcc/modulo-sched.c b/gcc/modulo-sched.c
index f76bcfdab44..52190e0e777 100644
--- a/gcc/modulo-sched.c
+++ b/gcc/modulo-sched.c
@@ -894,44 +894,6 @@ canon_loop (struct loop *loop)
}
}
-/* Build the loop information without loop
- canonization, the loop canonization will
- be performed if the loop is SMSable. */
-static struct loops *
-build_loops_structure (FILE *dumpfile)
-{
- struct loops *loops = XCNEW (struct loops);
-
- /* Find the loops. */
-
- if (flow_loops_find (loops) <= 1)
- {
- /* No loops. */
- flow_loops_free (loops);
- free (loops);
-
- return NULL;
- }
-
- /* Not going to update these. */
- free (loops->cfg.rc_order);
- loops->cfg.rc_order = NULL;
- free (loops->cfg.dfs_order);
- loops->cfg.dfs_order = NULL;
-
- create_preheaders (loops, CP_SIMPLE_PREHEADERS);
- mark_single_exit_loops (loops);
- /* Dump loops. */
- flow_loops_dump (loops, dumpfile, NULL, 1);
-
-#ifdef ENABLE_CHECKING
- verify_dominators (CDI_DOMINATORS);
- verify_loop_structure (loops);
-#endif
-
- return loops;
-}
-
/* Main entry point, perform SMS scheduling on the loops of the function
that consist of single basic blocks. */
static void
@@ -953,10 +915,11 @@ sms_schedule (FILE *dump_file)
edge latch_edge;
gcov_type trip_count = 0;
- if (! (loops = build_loops_structure (dump_file)))
+ loops = loop_optimizer_init (dump_file, (LOOPS_HAVE_PREHEADERS
+ | LOOPS_HAVE_MARKED_SINGLE_EXITS));
+ if (!loops)
return; /* There is no loops to schedule. */
-
stats_file = dump_file;
/* Initialize issue_rate. */