Commit f70de156 by Sebastian Pop Committed by Sebastian Pop

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
parent 74715a9b
2009-10-22 Sebastian Pop <sebastian.pop@amd.com> 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. * graphite-poly.h (struct scop): Add a field saved_schedule.
(SCOP_SAVED_SCHEDULE): New. (SCOP_SAVED_SCHEDULE): New.
(store_lst_schedule): New. (store_lst_schedule): New.
......
...@@ -463,6 +463,9 @@ new_scop (void *region) ...@@ -463,6 +463,9 @@ new_scop (void *region)
SCOP_BBS (scop) = VEC_alloc (poly_bb_p, heap, 3); SCOP_BBS (scop) = VEC_alloc (poly_bb_p, heap, 3);
SCOP_ORIGINAL_PDDRS (scop) = htab_create (10, hash_poly_ddr_p, SCOP_ORIGINAL_PDDRS (scop) = htab_create (10, hash_poly_ddr_p,
eq_poly_ddr_p, free_poly_ddr); eq_poly_ddr_p, free_poly_ddr);
SCOP_ORIGINAL_SCHEDULE (scop) = NULL;
SCOP_TRANSFORMED_SCHEDULE (scop) = NULL;
SCOP_SAVED_SCHEDULE (scop) = NULL;
return scop; return scop;
} }
...@@ -483,6 +486,9 @@ free_scop (scop_p scop) ...@@ -483,6 +486,9 @@ free_scop (scop_p scop)
ppl_delete_Pointset_Powerset_C_Polyhedron (SCOP_CONTEXT (scop)); ppl_delete_Pointset_Powerset_C_Polyhedron (SCOP_CONTEXT (scop));
htab_delete (SCOP_ORIGINAL_PDDRS (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); XDELETE (scop);
} }
......
...@@ -670,6 +670,28 @@ new_lst_stmt (poly_bb_p pbb) ...@@ -670,6 +670,28 @@ new_lst_stmt (poly_bb_p pbb)
return lst; 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. */ /* Returns a copy of LST. */
static inline lst_p static inline lst_p
...@@ -945,6 +967,9 @@ store_scattering_pbb (poly_bb_p pbb) ...@@ -945,6 +967,9 @@ store_scattering_pbb (poly_bb_p pbb)
static inline void static inline void
store_lst_schedule (scop_p scop) 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)); SCOP_SAVED_SCHEDULE (scop) = copy_lst (SCOP_TRANSFORMED_SCHEDULE (scop));
} }
...@@ -953,6 +978,9 @@ store_lst_schedule (scop_p scop) ...@@ -953,6 +978,9 @@ store_lst_schedule (scop_p scop)
static inline void static inline void
restore_lst_schedule (scop_p scop) 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)); SCOP_TRANSFORMED_SCHEDULE (scop) = copy_lst (SCOP_SAVED_SCHEDULE (scop));
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment