summaryrefslogtreecommitdiff
path: root/gcc/loop-init.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/loop-init.c')
-rw-r--r--gcc/loop-init.c26
1 files changed, 7 insertions, 19 deletions
diff --git a/gcc/loop-init.c b/gcc/loop-init.c
index 0b882d9e163..19d53e112bd 100644
--- a/gcc/loop-init.c
+++ b/gcc/loop-init.c
@@ -36,9 +36,6 @@ loop_optimizer_init (FILE *dumpfile)
struct loops *loops = xcalloc (1, sizeof (struct loops));
edge e;
- /* Initialize structures for layout changes. */
- cfg_layout_initialize ();
-
/* Avoid annoying special cases of edges going to exit
block. */
for (e = EXIT_BLOCK_PTR->pred; e; e = e->pred_next)
@@ -49,18 +46,11 @@ loop_optimizer_init (FILE *dumpfile)
if (flow_loops_find (loops, LOOP_TREE) <= 1)
{
- basic_block bb;
-
/* No loops. */
flow_loops_free (loops);
free_dominance_info (CDI_DOMINATORS);
free (loops);
- /* Make chain. */
- FOR_EACH_BB (bb)
- if (bb->next_bb != EXIT_BLOCK_PTR)
- bb->rbi->next = bb->next_bb;
- cfg_layout_finalize ();
return NULL;
}
@@ -94,13 +84,14 @@ loop_optimizer_init (FILE *dumpfile)
void
loop_optimizer_finalize (struct loops *loops, FILE *dumpfile)
{
- basic_block bb;
+ unsigned i;
- /* Finalize layout changes. */
- /* Make chain. */
- FOR_EACH_BB (bb)
- if (bb->next_bb != EXIT_BLOCK_PTR)
- bb->rbi->next = bb->next_bb;
+ if (!loops)
+ return;
+
+ for (i = 1; i < loops->num; i++)
+ if (loops->parray[i])
+ free_simple_loop_desc (loops->parray[i]);
/* Another dump. */
flow_loops_dump (loops, dumpfile, NULL, 1);
@@ -110,9 +101,6 @@ loop_optimizer_finalize (struct loops *loops, FILE *dumpfile)
free_dominance_info (CDI_DOMINATORS);
free (loops);
- /* Finalize changes. */
- cfg_layout_finalize ();
-
/* Checking. */
#ifdef ENABLE_CHECKING
verify_flow_info ();