summaryrefslogtreecommitdiff
path: root/isl_coalesce.c
diff options
context:
space:
mode:
authorSven Verdoolaege <skimo@kotnet.org>2010-02-17 19:16:17 +0100
committerSven Verdoolaege <skimo@kotnet.org>2010-02-17 19:21:18 +0100
commitca85b2076e39a6bf7895e24758ecc95361fc9fe7 (patch)
tree83a3463fc727efe268507bc65acbdbd2ca88e3a1 /isl_coalesce.c
parentadf6f98ef87dfd0f936ecff40c5cf4ef9626019f (diff)
downloadisl-ca85b2076e39a6bf7895e24758ecc95361fc9fe7.tar.gz
isl-ca85b2076e39a6bf7895e24758ecc95361fc9fe7.tar.bz2
isl-ca85b2076e39a6bf7895e24758ecc95361fc9fe7.zip
isl_map_coalesce: fix some regressions introduced by recent extensions
c4dc489 (isl_map_coalesce: handle more cases) extended the possibilities for fusing two basic maps, but introduced some regressions. Specifically, a "continue" was missing and the code for copying integer division definitions was removed by mistake.
Diffstat (limited to 'isl_coalesce.c')
-rw-r--r--isl_coalesce.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/isl_coalesce.c b/isl_coalesce.c
index dfc3adfb..bb56261c 100644
--- a/isl_coalesce.c
+++ b/isl_coalesce.c
@@ -166,6 +166,7 @@ static int fuse(struct isl_map *map, int i, int j,
for (k = 0; k < map->p[i]->n_eq; ++k) {
if (eq_i && (eq_i[2 * k] != STATUS_VALID ||
eq_i[2 * k + 1] != STATUS_VALID))
+ continue;
l = isl_basic_map_alloc_equality(fused);
if (l < 0)
goto error;
@@ -200,6 +201,13 @@ static int fuse(struct isl_map *map, int i, int j,
isl_seq_cpy(fused->ineq[l], map->p[j]->ineq[k], 1 + total);
}
+ for (k = 0; k < map->p[i]->n_div; ++k) {
+ int l = isl_basic_map_alloc_div(fused);
+ if (l < 0)
+ goto error;
+ isl_seq_cpy(fused->div[l], map->p[i]->div[k], 1 + 1 + total);
+ }
+
for (k = 0; k < extra_rows; ++k) {
l = isl_basic_map_alloc_inequality(fused);
if (l < 0)