Hello.
Patch survives regbootstrap on x86_64-linux-gnu.
Ready for trunk?
Thanks,
Martin
>From 3f84b19e0ea7eacf26a566d3ef796397dafe76ce Mon Sep 17 00:00:00 2001
From: marxin
Date: Thu, 12 Nov 2015 15:45:38 +0100
Subject: [PATCH] Fix memory leaks in graphite
---
gcc/graphite-poly.c | 1 +
gcc/graphite-scop-detection.c | 27 ++-
2 files changed, 19 insertions(+), 9 deletions(-)
diff --git a/gcc/graphite-poly.c b/gcc/graphite-poly.c
index 5928b4c..809670a 100644
--- a/gcc/graphite-poly.c
+++ b/gcc/graphite-poly.c
@@ -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);
diff --git a/gcc/graphite-scop-detection.c b/gcc/graphite-scop-detection.c
index a7179d9..b5298d7 100644
--- a/gcc/graphite-scop-detection.c
+++ b/gcc/graphite-scop-detection.c
@@ -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 drs;
- drs.create (3);
- vec writes;
- writes.create (3);
- vec reads;
- reads.create (3);
+ vec drs = vNULL;
+ vec writes = vNULL;
+ vec reads = vNULL;
sese_l region = scop->scop_info->region;
loop_p nest = outermost_loop_in_sese (region, bb);
--
2.6.2