PR jit/63854: Fix leak of paths within jump threading
authordmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 19 Nov 2014 20:17:44 +0000 (20:17 +0000)
committerdmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 19 Nov 2014 20:17:44 +0000 (20:17 +0000)
gcc/ChangeLog:
PR jit/63854
* tree-ssa-threadedge.c (thread_across_edge): Don't just release
"path", delete it.
* tree-ssa-threadupdate.c (delete_jump_thread_path): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217804 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/tree-ssa-threadedge.c
gcc/tree-ssa-threadupdate.c

index 9c9bd01..9cb1ebd 100644 (file)
@@ -1,6 +1,13 @@
 2014-11-19  David Malcolm  <dmalcolm@redhat.com>
 
        PR jit/63854
+       * tree-ssa-threadedge.c (thread_across_edge): Don't just release
+       "path", delete it.
+       * tree-ssa-threadupdate.c (delete_jump_thread_path): Likewise.
+
+2014-11-19  David Malcolm  <dmalcolm@redhat.com>
+
+       PR jit/63854
        * tree-ssa-pre.c (do_regular_insertion): Convert "avail" from
        vec<> to auto_vec<> to fix a leak.
 
index 486940a..8b0b7b8 100644 (file)
@@ -1150,6 +1150,7 @@ thread_across_edge (gcond *dummy_cond,
         through the vector entries.  */
       gcc_assert (path->length () == 0);
       path->release ();
+      delete path;
 
       /* A negative status indicates the target block was deemed too big to
         duplicate.  Just quit now rather than trying to use the block as
index 97748cb..ca0b8bf 100644 (file)
@@ -2481,6 +2481,7 @@ delete_jump_thread_path (vec<jump_thread_edge *> *path)
   for (unsigned int i = 0; i < path->length (); i++)
     delete (*path)[i];
   path->release();
+  delete path;
 }
 
 /* Register a jump threading opportunity.  We queue up all the jump