Hi!

We leak the loop->ifns vectors, fixed thusly, bootstrapped/regtested on
x86_64-linux and i686-linux, committed to trunk.

The first 2 hunks are just cleanup, loop is allocated using XCNEW and thus
cleared, no need to clear anything again (especially when it isn't all
but just random subset of the fields).

2017-02-14  Jakub Jelinek  <ja...@redhat.com>

        PR middle-end/79505
        * omp-offload.c (free_oacc_loop): Release loop->ifns vector.
        (new_oacc_loop_raw): Don't clear already cleared fields.

--- gcc/omp-offload.c.jj        2017-02-09 16:16:01.000000000 +0100
+++ gcc/omp-offload.c   2017-02-14 13:23:24.198091131 +0100
@@ -681,7 +681,6 @@ new_oacc_loop_raw (oacc_loop *parent, lo
   oacc_loop *loop = XCNEW (oacc_loop);
 
   loop->parent = parent;
-  loop->child = loop->sibling = NULL;
 
   if (parent)
     {
@@ -690,15 +689,6 @@ new_oacc_loop_raw (oacc_loop *parent, lo
     }
 
   loop->loc = loc;
-  loop->marker = NULL;
-  memset (loop->heads, 0, sizeof (loop->heads));
-  memset (loop->tails, 0, sizeof (loop->tails));
-  loop->routine = NULL_TREE;
-
-  loop->mask = loop->e_mask = loop->flags = loop->inner = 0;
-  loop->chunk_size = 0;
-  loop->head_end = NULL;
-
   return loop;
 }
 
@@ -773,6 +763,7 @@ free_oacc_loop (oacc_loop *loop)
   if (loop->child)
     free_oacc_loop (loop->child);
 
+  loop->ifns.release ();
   free (loop);
 }
 

        Jakub

Reply via email to