summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSven Verdoolaege <skimo@kotnet.org>2009-12-18 18:26:58 +0100
committerSven Verdoolaege <skimo@kotnet.org>2009-12-18 18:26:58 +0100
commit31e53ddde31056fb067f8d3ec1f9656d3b981b21 (patch)
tree0b43aaf5a49294132ea22c1e4024f89bec929713
parent309036cf4fb6d77a3287a8de8a9098c0a1211778 (diff)
downloadisl-31e53ddde31056fb067f8d3ec1f9656d3b981b21.tar.gz
isl-31e53ddde31056fb067f8d3ec1f9656d3b981b21.tar.bz2
isl-31e53ddde31056fb067f8d3ec1f9656d3b981b21.zip
isl_constraint_dup: make sure line refers to equation in constraint's bmap
-rw-r--r--isl_constraint.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/isl_constraint.c b/isl_constraint.c
index 54b2c440..386cd27b 100644
--- a/isl_constraint.c
+++ b/isl_constraint.c
@@ -103,10 +103,19 @@ struct isl_constraint *isl_inequality_alloc(struct isl_dim *dim)
struct isl_constraint *isl_constraint_dup(struct isl_constraint *c)
{
+ struct isl_basic_map *bmap;
+ int i;
+ int eq;
+
if (!c)
return NULL;
- return isl_basic_map_constraint(isl_basic_map_copy(c->bmap), c->line);
+ eq = c->line < c->bmap->eq + c->bmap->n_eq;
+ i = eq ? c->line - c->bmap->eq : c->line - c->bmap->ineq;
+ bmap = isl_basic_map_copy(c->bmap);
+ if (!bmap)
+ return NULL;
+ return isl_basic_map_constraint(bmap, eq ? bmap->eq + i : bmap->ineq + i);
}
struct isl_constraint *isl_constraint_cow(struct isl_constraint *c)