aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSebastian Pop <sebastian.pop@amd.com>2009-11-25 05:21:26 +0000
committerSebastian Pop <spop@gcc.gnu.org>2009-11-25 05:21:26 +0000
commitf70de156ee79126bdb86837e6a2e41930c531836 (patch)
treef077f119e5b664d698f1c0e679293ab62b894687 /gcc
parent74715a9bf6a5c2e4732b6e9e848048498251c19e (diff)
downloadgcc-f70de156ee79126bdb86837e6a2e41930c531836.zip
gcc-f70de156ee79126bdb86837e6a2e41930c531836.tar.gz
gcc-f70de156ee79126bdb86837e6a2e41930c531836.tar.bz2
graphite-poly.c (new_scop): Initialize SCOP_ORIGINAL_SCHEDULE...
2009-10-22 Sebastian Pop <sebastian.pop@amd.com> * graphite-poly.c (new_scop): Initialize SCOP_ORIGINAL_SCHEDULE, SCOP_TRANSFORMED_SCHEDULE, and SCOP_SAVED_SCHEDULE. (free_scop): Call free_lst on SCOP_ORIGINAL_SCHEDULE, SCOP_TRANSFORMED_SCHEDULE, and SCOP_SAVED_SCHEDULE. * graphite-poly.h (free_lst): New. (store_lst_schedule): Free SCOP_SAVED_SCHEDULE. (restore_lst_schedule): Free SCOP_TRANSFORMED_SCHEDULE. From-SVN: r154618
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog.graphite10
-rw-r--r--gcc/graphite-poly.c6
-rw-r--r--gcc/graphite-poly.h28
3 files changed, 44 insertions, 0 deletions
diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite
index 2450045..4f077da 100644
--- a/gcc/ChangeLog.graphite
+++ b/gcc/ChangeLog.graphite
@@ -1,5 +1,15 @@
2009-10-22 Sebastian Pop <sebastian.pop@amd.com>
+ * graphite-poly.c (new_scop): Initialize SCOP_ORIGINAL_SCHEDULE,
+ SCOP_TRANSFORMED_SCHEDULE, and SCOP_SAVED_SCHEDULE.
+ (free_scop): Call free_lst on SCOP_ORIGINAL_SCHEDULE,
+ SCOP_TRANSFORMED_SCHEDULE, and SCOP_SAVED_SCHEDULE.
+ * graphite-poly.h (free_lst): New.
+ (store_lst_schedule): Free SCOP_SAVED_SCHEDULE.
+ (restore_lst_schedule): Free SCOP_TRANSFORMED_SCHEDULE.
+
+2009-10-22 Sebastian Pop <sebastian.pop@amd.com>
+
* graphite-poly.h (struct scop): Add a field saved_schedule.
(SCOP_SAVED_SCHEDULE): New.
(store_lst_schedule): New.
diff --git a/gcc/graphite-poly.c b/gcc/graphite-poly.c
index bed662a..d76397a 100644
--- a/gcc/graphite-poly.c
+++ b/gcc/graphite-poly.c
@@ -463,6 +463,9 @@ new_scop (void *region)
SCOP_BBS (scop) = VEC_alloc (poly_bb_p, heap, 3);
SCOP_ORIGINAL_PDDRS (scop) = htab_create (10, hash_poly_ddr_p,
eq_poly_ddr_p, free_poly_ddr);
+ SCOP_ORIGINAL_SCHEDULE (scop) = NULL;
+ SCOP_TRANSFORMED_SCHEDULE (scop) = NULL;
+ SCOP_SAVED_SCHEDULE (scop) = NULL;
return scop;
}
@@ -483,6 +486,9 @@ free_scop (scop_p scop)
ppl_delete_Pointset_Powerset_C_Polyhedron (SCOP_CONTEXT (scop));
htab_delete (SCOP_ORIGINAL_PDDRS (scop));
+ free_lst (SCOP_ORIGINAL_SCHEDULE (scop));
+ free_lst (SCOP_TRANSFORMED_SCHEDULE (scop));
+ free_lst (SCOP_SAVED_SCHEDULE (scop));
XDELETE (scop);
}
diff --git a/gcc/graphite-poly.h b/gcc/graphite-poly.h
index 3782c78..0de58ba 100644
--- a/gcc/graphite-poly.h
+++ b/gcc/graphite-poly.h
@@ -670,6 +670,28 @@ new_lst_stmt (poly_bb_p pbb)
return lst;
}
+/* Frees the memory used by LST. */
+
+static inline void
+free_lst (lst_p lst)
+{
+ if (!lst)
+ return;
+
+ if (LST_LOOP_P (lst))
+ {
+ int i;
+ lst_p l;
+
+ for (i = 0; VEC_iterate (lst_p, LST_SEQ (lst), i, l); i++)
+ free_lst (l);
+
+ VEC_free (lst_p, heap, LST_SEQ (lst));
+ }
+
+ free (lst);
+}
+
/* Returns a copy of LST. */
static inline lst_p
@@ -945,6 +967,9 @@ store_scattering_pbb (poly_bb_p pbb)
static inline void
store_lst_schedule (scop_p scop)
{
+ if (SCOP_SAVED_SCHEDULE (scop))
+ free_lst (SCOP_SAVED_SCHEDULE (scop));
+
SCOP_SAVED_SCHEDULE (scop) = copy_lst (SCOP_TRANSFORMED_SCHEDULE (scop));
}
@@ -953,6 +978,9 @@ store_lst_schedule (scop_p scop)
static inline void
restore_lst_schedule (scop_p scop)
{
+ if (SCOP_TRANSFORMED_SCHEDULE (scop))
+ free_lst (SCOP_TRANSFORMED_SCHEDULE (scop));
+
SCOP_TRANSFORMED_SCHEDULE (scop) = copy_lst (SCOP_SAVED_SCHEDULE (scop));
}