From 40c22b9c211d4302635ecf431a7999d04be91218 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Sun, 24 Aug 2008 21:15:30 +0200 Subject: [PATCH] extract isl_map_align_divs from isl_affine_hull.c --- isl_affine_hull.c | 8 ++------ isl_map.c | 17 +++++++++++++++++ isl_map_private.h | 1 + 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/isl_affine_hull.c b/isl_affine_hull.c index 13a53ca..e7c55dd 100644 --- a/isl_affine_hull.c +++ b/isl_affine_hull.c @@ -232,8 +232,6 @@ struct isl_basic_map *isl_map_affine_hull(struct isl_ctx *ctx, int i; struct isl_basic_map *bmap; - map = isl_map_compute_divs(ctx, map); - map = isl_map_cow(ctx, map); if (!map) return NULL; @@ -244,10 +242,8 @@ struct isl_basic_map *isl_map_affine_hull(struct isl_ctx *ctx, return bmap; } - for (i = 1; i < map->n; ++i) - map->p[0] = isl_basic_map_align_divs(ctx, map->p[0], map->p[i]); - for (i = 1; i < map->n; ++i) - map->p[i] = isl_basic_map_align_divs(ctx, map->p[i], map->p[0]); + map = isl_map_align_divs(ctx, map); + map = isl_map_cow(ctx, map); for (i = 0; i < map->n; ++i) { map->p[i] = isl_basic_map_cow(ctx, map->p[i]); diff --git a/isl_map.c b/isl_map.c index 38308ae..033a1d3 100644 --- a/isl_map.c +++ b/isl_map.c @@ -2859,6 +2859,23 @@ error: return NULL; } +struct isl_map *isl_map_align_divs(struct isl_ctx *ctx, struct isl_map *map) +{ + int i; + + map = isl_map_compute_divs(ctx, map); + map = isl_map_cow(ctx, map); + if (!map) + return NULL; + + for (i = 1; i < map->n; ++i) + map->p[0] = isl_basic_map_align_divs(ctx, map->p[0], map->p[i]); + for (i = 1; i < map->n; ++i) + map->p[i] = isl_basic_map_align_divs(ctx, map->p[i], map->p[0]); + + return map; +} + static struct isl_map *add_cut_constraint(struct isl_ctx *ctx, struct isl_map *dst, struct isl_basic_map *src, isl_int *c, diff --git a/isl_map_private.h b/isl_map_private.h index 2a62487..fd713b9 100644 --- a/isl_map_private.h +++ b/isl_map_private.h @@ -38,6 +38,7 @@ struct isl_map *isl_basic_map_compute_divs(struct isl_ctx *ctx, struct isl_map *isl_map_compute_divs(struct isl_ctx *ctx, struct isl_map *map); struct isl_basic_map *isl_basic_map_align_divs(struct isl_ctx *ctx, struct isl_basic_map *dst, struct isl_basic_map *src); +struct isl_map *isl_map_align_divs(struct isl_ctx *ctx, struct isl_map *map); struct isl_basic_map *isl_basic_map_gauss(struct isl_ctx *ctx, struct isl_basic_map *bmap, int *progress); struct isl_basic_set *isl_basic_set_gauss(struct isl_ctx *ctx, -- 2.7.4