aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1992-08-11 12:52:01 -0700
committerJim Wilson <wilson@gcc.gnu.org>1992-08-11 12:52:01 -0700
commit07e857c23f6f011ce26ca409510253e1f22e3a49 (patch)
tree56864b3cbd8be7c925659f532228babc03f2a1cc
parentba534a45c7c54378a96328b634cd5e0a1fa8ca9a (diff)
downloadgcc-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.c19
1 files changed, 7 insertions, 12 deletions
diff --git a/gcc/loop.c b/gcc/loop.c
index d13bbcc..f050017 100644
--- a/gcc/loop.c
+++ b/gcc/loop.c
@@ -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.