diff options
Diffstat (limited to 'gcc/loop-init.c')
-rw-r--r-- | gcc/loop-init.c | 26 |
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 (); |