Fix memory leaks in graphite
authorMartin Liska <mliska@suse.cz>
Fri, 13 Nov 2015 12:28:54 +0000 (13:28 +0100)
committerMartin Liska <marxin@gcc.gnu.org>
Fri, 13 Nov 2015 12:28:54 +0000 (12:28 +0000)
* graphite-poly.c (free_scop): Release scop->drs vector.
* graphite-scop-detection.c (scop_detection::harmful_stmt_in_region):
Release dom vector.
(try_generate_gimple_bb): Use vNULL as a default initialization
for vectors.

From-SVN: r230312

gcc/ChangeLog
gcc/graphite-poly.c
gcc/graphite-scop-detection.c

index fde5bef652257c70c6e257a53f16668b9232440a..9c3e6dff8a0a74f9f45e342c4eddbee9bfa6e4a5 100644 (file)
@@ -1,3 +1,11 @@
+2015-11-13  Martin Liska  <mliska@suse.cz>
+
+       * graphite-poly.c (free_scop): Release scop->drs vector.
+       * graphite-scop-detection.c (scop_detection::harmful_stmt_in_region):
+       Release dom vector.
+       (try_generate_gimple_bb): Use vNULL as a default initialization
+       for vectors.
+
 2015-11-13  Martin Liska  <mliska@suse.cz>
 
        PR ipa/68311
index 5928b4ce60643480b88682f77a8ac41bbc51cbff..809670ab3308901a141d20ccbb5695acdcf53f8d 100644 (file)
@@ -328,6 +328,7 @@ free_scop (scop_p scop)
     free_poly_bb (pbb);
 
   scop->pbbs.release ();
+  scop->drs.release ();
 
   isl_set_free (scop->param_context);
   isl_union_map_free (scop->must_raw);
index a7179d97d8928d38fbbdf06d2edd2edf4a5e65c2..b5298d7e0a2ee14cfc30521903411fff9d105eb1 100644 (file)
@@ -522,6 +522,11 @@ class scop_detection
 public:
   scop_detection () : scops (vNULL) {}
 
+  ~scop_detection ()
+  {
+    scops.release ();
+  }
+
   /* A marker for invalid sese_l.  */
   static sese_l invalid_sese;
 
@@ -1065,13 +1070,20 @@ scop_detection::harmful_stmt_in_region (sese_l scop) const
 
       /* The basic block should not be part of an irreducible loop.  */
       if (bb->flags & BB_IRREDUCIBLE_LOOP)
-        return true;
+       {
+         dom.release ();
+         return true;
+       }
 
       if (harmful_stmt_in_bb (scop, bb))
-       return true;
+       {
+         dom.release ();
+         return true;
+       }
     }
 
-    return false;
+  dom.release ();
+  return false;
 }
 
 /* Returns true if S1 subsumes/surrounds S2.  */
@@ -1749,12 +1761,9 @@ graphite_find_cross_bb_scalar_vars (scop_p scop, gimple *stmt,
 static gimple_poly_bb_p
 try_generate_gimple_bb (scop_p scop, basic_block bb)
 {
-  vec<data_reference_p> drs;
-  drs.create (3);
-  vec<tree> writes;
-  writes.create (3);
-  vec<scalar_use> reads;
-  reads.create (3);
+  vec<data_reference_p> drs = vNULL;
+  vec<tree> writes = vNULL;
+  vec<scalar_use> reads = vNULL;
 
   sese_l region = scop->scop_info->region;
   loop_p nest = outermost_loop_in_sese (region, bb);