diff options
author | Sven Verdoolaege <skimo@kotnet.org> | 2010-02-17 19:16:17 +0100 |
---|---|---|
committer | Sven Verdoolaege <skimo@kotnet.org> | 2010-02-17 19:21:18 +0100 |
commit | ca85b2076e39a6bf7895e24758ecc95361fc9fe7 (patch) | |
tree | 83a3463fc727efe268507bc65acbdbd2ca88e3a1 /isl_coalesce.c | |
parent | adf6f98ef87dfd0f936ecff40c5cf4ef9626019f (diff) | |
download | isl-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.c | 8 |
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) |