loop-doloop.c (doloop_valid_p): Make sure that body gets freed.
authorAndrew Pinski <pinskia@physics.uc.edu>
Fri, 7 May 2004 14:17:33 +0000 (14:17 +0000)
committerAndrew Pinski <pinskia@gcc.gnu.org>
Fri, 7 May 2004 14:17:33 +0000 (07:17 -0700)
2004-05-07  Andrew Pinski  <pinskia@physics.uc.edu>

        * loop-doloop.c (doloop_valid_p): Make sure that body
        gets freed.

From-SVN: r81619

gcc/ChangeLog
gcc/loop-doloop.c

index a4e9863953889631e913fd9fca37bdbc3dbfc539..a4632360b52c570268f60e2d9489b4aff1f3be9a 100644 (file)
@@ -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
index fa6b55b3cfa59c22d354bf9ff5dc4fad8f1b1dee..d8d3edf500e844c784c89d5940210f5bead14d26 100644 (file)
@@ -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.  */