From c823415a1c13b0830eaeff4dc59ecdfc1aab3937 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Thu, 27 Jun 2013 17:03:11 +0200 Subject: [PATCH] extract out isl_space_domain_map from isl_map_domain_map Signed-off-by: Sven Verdoolaege --- doc/user.pod | 2 ++ include/isl/space.h | 1 + isl_map.c | 5 +---- isl_space.c | 13 +++++++++++++ 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/doc/user.pod b/doc/user.pod index 1bf518a7..591aec84 100644 --- a/doc/user.pod +++ b/doc/user.pod @@ -921,6 +921,8 @@ using the following functions. __isl_give isl_space *isl_space_from_domain(__isl_take isl_space *space); __isl_give isl_space *isl_space_range(__isl_take isl_space *space); __isl_give isl_space *isl_space_from_range(__isl_take isl_space *space); + __isl_give isl_space *isl_space_domain_map( + __isl_take isl_space *space); __isl_give isl_space *isl_space_params( __isl_take isl_space *space); __isl_give isl_space *isl_space_set_from_params( diff --git a/include/isl/space.h b/include/isl/space.h index 3ce41026..6e590af3 100644 --- a/include/isl/space.h +++ b/include/isl/space.h @@ -109,6 +109,7 @@ __isl_give isl_space *isl_space_domain(__isl_take isl_space *dim); __isl_give isl_space *isl_space_from_domain(__isl_take isl_space *dim); __isl_give isl_space *isl_space_range(__isl_take isl_space *dim); __isl_give isl_space *isl_space_from_range(__isl_take isl_space *dim); +__isl_give isl_space *isl_space_domain_map(__isl_take isl_space *space); __isl_give isl_space *isl_space_params(__isl_take isl_space *space); __isl_give isl_space *isl_space_set_from_params(__isl_take isl_space *space); diff --git a/isl_map.c b/isl_map.c index 2697f232..f43624cb 100644 --- a/isl_map.c +++ b/isl_map.c @@ -4843,15 +4843,12 @@ error: __isl_give isl_map *isl_map_domain_map(__isl_take isl_map *map) { int i; - isl_space *domain_dim; map = isl_map_cow(map); if (!map) return NULL; - domain_dim = isl_space_from_range(isl_space_domain(isl_map_get_space(map))); - map->dim = isl_space_from_domain(isl_space_wrap(map->dim)); - map->dim = isl_space_join(map->dim, domain_dim); + map->dim = isl_space_domain_map(map->dim); if (!map->dim) goto error; for (i = 0; i < map->n; ++i) { diff --git a/isl_space.c b/isl_space.c index bd1fd3e9..1b5f4666 100644 --- a/isl_space.c +++ b/isl_space.c @@ -1403,6 +1403,19 @@ error: return NULL; } +/* Given a map space A -> B, return the map space [A -> B] -> A. + */ +__isl_give isl_space *isl_space_domain_map(__isl_take isl_space *space) +{ + isl_space *domain; + + domain = isl_space_from_range(isl_space_domain(isl_space_copy(space))); + space = isl_space_from_domain(isl_space_wrap(space)); + space = isl_space_join(space, domain); + + return space; +} + __isl_give isl_space *isl_space_params(__isl_take isl_space *space) { if (isl_space_is_params(space)) -- 2.11.4.GIT