summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Pinski <pinskia@physics.uc.edu>2004-05-07 14:17:33 +0000
committerAndrew Pinski <pinskia@gcc.gnu.org>2004-05-07 07:17:33 -0700
commit7600f0944bacf83072ecd8e275f83e8c06ccf980 (patch)
tree4cc983a57f864d7e4239d0a5eaa6a59bf033f11a
parentbfb23806b83c3bc24f9ed6232974d783c00a2ebd (diff)
downloadgcc-7600f0944bacf83072ecd8e275f83e8c06ccf980.tar.gz
loop-doloop.c (doloop_valid_p): Make sure that body gets freed.
2004-05-07 Andrew Pinski <pinskia@physics.uc.edu> * loop-doloop.c (doloop_valid_p): Make sure that body gets freed. From-SVN: r81619
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/loop-doloop.c15
2 files changed, 16 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a4e98639538..a4632360b52 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2004-05-07 Andrew Pinski <pinskia@physics.uc.edu>
+
+ * loop-doloop.c (doloop_valid_p): Make sure that body
+ gets freed.
+
2004-05-07 Eric Botcazou <ebotcazou@act-europe.fr>
* config/sparc/sparc-protos.h (sparc_skip_caller_unimp): New
diff --git a/gcc/loop-doloop.c b/gcc/loop-doloop.c
index fa6b55b3cfa..d8d3edf500e 100644
--- a/gcc/loop-doloop.c
+++ b/gcc/loop-doloop.c
@@ -144,6 +144,7 @@ doloop_valid_p (struct loop *loop, struct niter_desc *desc)
basic_block *body = get_loop_body (loop), bb;
rtx insn;
unsigned i;
+ bool result = true;
/* Check for loops that may not terminate under special conditions. */
if (!desc->simple_p
@@ -174,7 +175,8 @@ doloop_valid_p (struct loop *loop, struct niter_desc *desc)
enable count-register loops in this case. */
if (dump_file)
fprintf (dump_file, "Doloop: Possible infinite iteration case.\n");
- return false;
+ result = false;
+ goto cleanup;
}
for (i = 0; i < loop->num_nodes; i++)
@@ -191,7 +193,8 @@ doloop_valid_p (struct loop *loop, struct niter_desc *desc)
{
if (dump_file)
fprintf (dump_file, "Doloop: Function call in loop.\n");
- return false;
+ result = false;
+ goto cleanup;
}
/* Some targets (eg, PPC) use the count register for branch on table
@@ -202,13 +205,17 @@ doloop_valid_p (struct loop *loop, struct niter_desc *desc)
{
if (dump_file)
fprintf (dump_file, "Doloop: Computed branch in the loop.\n");
- return false;
+ result = false;
+ goto cleanup;
}
}
}
+ result = true;
+
+cleanup:
free (body);
- return true;
+ return result;
}
/* Adds test of COND jumping to DEST to the end of BB. */