diff options
author | Jim Wilson <wilson@gcc.gnu.org> | 1992-08-11 12:52:01 -0700 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 1992-08-11 12:52:01 -0700 |
commit | 07e857c23f6f011ce26ca409510253e1f22e3a49 (patch) | |
tree | 56864b3cbd8be7c925659f532228babc03f2a1cc | |
parent | ba534a45c7c54378a96328b634cd5e0a1fa8ca9a (diff) | |
download | gcc-07e857c23f6f011ce26ca409510253e1f22e3a49.zip gcc-07e857c23f6f011ce26ca409510253e1f22e3a49.tar.gz gcc-07e857c23f6f011ce26ca409510253e1f22e3a49.tar.bz2 |
(loop_optimize): Delete uses of loop_number_first_block,
loop_number_last_block, loop_number_block_level. Correct call of
find_loop_tree_blocks. Add call to unroll_block_trees.
From-SVN: r1799
-rw-r--r-- | gcc/loop.c | 19 |
1 files changed, 7 insertions, 12 deletions
@@ -377,17 +377,6 @@ loop_optimize (f, dumpfile) loop_invalid = (char *) alloca (max_loop_num * sizeof (char)); loop_number_exit_labels = (rtx *) alloca (max_loop_num * sizeof (rtx)); - if (flag_unroll_loops && write_symbols != NO_DEBUG) - { - loop_number_first_block - = (union tree_node **) alloca (max_loop_num - * sizeof (union tree_node *)); - loop_number_last_block - = (union tree_node **) alloca (max_loop_num - * sizeof (union tree_node *)); - loop_number_block_level = (int *) alloca (max_loop_num * sizeof (int)); - } - /* Find and process each loop. First, find them, and record them in order of their beginnings. */ find_and_verify_loops (f); @@ -433,7 +422,7 @@ loop_optimize (f, dumpfile) /* Create a mapping from loops to BLOCK tree nodes. */ if (flag_unroll_loops && write_symbols != NO_DEBUG) - find_loop_tree_blocks (f); + find_loop_tree_blocks (); /* Now scan the loops, last ones first, since this means inner ones are done before outer ones. */ @@ -441,6 +430,12 @@ loop_optimize (f, dumpfile) if (! loop_invalid[i] && loop_number_loop_ends[i]) scan_loop (loop_number_loop_starts[i], loop_number_loop_ends[i], max_reg_num ()); + + /* If debugging and unrolling loops, we must replicate the tree nodes + corresponding to the blocks inside the loop, so that the original one + to one mapping will remain. */ + if (flag_unroll_loops && write_symbols != NO_DEBUG) + unroll_block_trees (); } /* Optimize one loop whose start is LOOP_START and end is END. |