aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMichael Hayes <m.hayes@elec.canterbury.ac.nz>2000-01-19 20:10:00 +0000
committerMichael Hayes <m.hayes@gcc.gnu.org>2000-01-19 20:10:00 +0000
commit78458962965e06a91c20511ab02f88195d3b6a91 (patch)
treed045be13d28bd70795112d00036097cd78a4960b /gcc
parenteda44c7832aab6417df69d6ab57f422f63c2dd0a (diff)
downloadgcc-78458962965e06a91c20511ab02f88195d3b6a91.zip
gcc-78458962965e06a91c20511ab02f88195d3b6a91.tar.gz
gcc-78458962965e06a91c20511ab02f88195d3b6a91.tar.bz2
loop.c (loop_optimize): Allocate loop_info structure for each loop prior to calling scan_loop.
* loop.c (loop_optimize): Allocate loop_info structure for each loop prior to calling scan_loop. From-SVN: r31508
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/loop.c12
2 files changed, 14 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3ccbe76..fff7083 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2000-01-20 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
+
+ * loop.c (loop_optimize): Allocate loop_info structure for each loop
+ prior to calling scan_loop.
+
Wed Jan 19 19:54:38 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
* sh.c (prepare_scc_operands): Abort if no compare insn is available.
diff --git a/gcc/loop.c b/gcc/loop.c
index d69094f..b52b33a 100644
--- a/gcc/loop.c
+++ b/gcc/loop.c
@@ -510,15 +510,21 @@ loop_optimize (f, dumpfile, unroll_p, bct_p)
this prevents low overhead loop instructions from being used. */
indirect_jump_in_function = indirect_jump_in_function_p (f);
- /* Now scan the loops, last ones first, since this means inner ones are done
- before outer ones. */
+ /* Allocate and initialize auxiliary loop information. */
for (i = max_loop_num - 1; i >= 0; i--)
{
struct loop *loop = &loops->array[i];
loop->info = (struct loop_info *) alloca (sizeof (struct loop_info));
memset (loop->info, 0, sizeof (struct loop_info));
-
+ }
+
+ /* Now scan the loops, last ones first, since this means inner ones are done
+ before outer ones. */
+ for (i = max_loop_num - 1; i >= 0; i--)
+ {
+ struct loop *loop = &loops->array[i];
+
if (! loop->invalid && loop->end)
scan_loop (loop, unroll_p, bct_p);
}