summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--polly/lib/Exchange/ScopLib.cpp32
1 files changed, 16 insertions, 16 deletions
diff --git a/polly/lib/Exchange/ScopLib.cpp b/polly/lib/Exchange/ScopLib.cpp
index f0a1fe0f5fb..3858d589596 100644
--- a/polly/lib/Exchange/ScopLib.cpp
+++ b/polly/lib/Exchange/ScopLib.cpp
@@ -498,16 +498,17 @@ ScopLib::~ScopLib() {
/// @param Space An isl space object, describing how to spilt the dimensions.
///
/// @return An isl constraint representing this integer array.
-isl_constraint *constraintFromMatrixRow(isl_int *row, isl_space *Space) {
+isl_constraint *constraintFromMatrixRow(isl_int *row,
+ __isl_take isl_space *Space) {
isl_constraint *c;
unsigned NbIn = isl_space_dim(Space, isl_dim_in);
unsigned NbParam = isl_space_dim(Space, isl_dim_param);
if (isl_int_is_zero(row[0]))
- c = isl_equality_alloc(isl_local_space_from_space(isl_space_copy(Space)));
+ c = isl_equality_alloc(isl_local_space_from_space(Space));
else
- c = isl_inequality_alloc(isl_local_space_from_space(isl_space_copy(Space)));
+ c = isl_inequality_alloc(isl_local_space_from_space(Space));
unsigned current_column = 1;
@@ -528,14 +529,14 @@ isl_constraint *constraintFromMatrixRow(isl_int *row, isl_space *Space) {
/// @param Space The dimensions that are contained in the OpenScop matrix.
///
/// @return An isl map representing m.
-isl_map *mapFromMatrix(scoplib_matrix_p m, isl_space *Space,
+isl_map *mapFromMatrix(scoplib_matrix_p m, __isl_take isl_space *Space,
unsigned scatteringDims) {
isl_basic_map *bmap = isl_basic_map_universe(isl_space_copy(Space));
for (unsigned i = 0; i < m->NbRows; ++i) {
isl_constraint *c;
- c = constraintFromMatrixRow(m->p[i], Space);
+ c = constraintFromMatrixRow(m->p[i], isl_space_copy(Space));
mpz_t minusOne;
mpz_init(minusOne);
@@ -558,6 +559,8 @@ isl_map *mapFromMatrix(scoplib_matrix_p m, isl_space *Space,
bmap = isl_basic_map_add_constraint(bmap, c);
}
+ isl_space_free(Space);
+
return isl_map_from_basic_map(bmap);
}
/// @brief Create an isl constraint from a row of OpenScop integers.
@@ -566,7 +569,8 @@ isl_map *mapFromMatrix(scoplib_matrix_p m, isl_space *Space,
/// @param Space An isl space object, describing how to spilt the dimensions.
///
/// @return An isl constraint representing this integer array.
-isl_constraint *constraintFromMatrixRowFull(isl_int *row, isl_space *Space) {
+isl_constraint *constraintFromMatrixRowFull(isl_int *row,
+ __isl_take isl_space *Space) {
isl_constraint *c;
unsigned NbOut = isl_space_dim(Space, isl_dim_out);
@@ -602,16 +606,18 @@ isl_constraint *constraintFromMatrixRowFull(isl_int *row, isl_space *Space) {
/// @param Space The dimensions that are contained in the OpenScop matrix.
///
/// @return An isl map representing m.
-isl_map *mapFromMatrix(scoplib_matrix_p m, isl_space *Space) {
+isl_map *mapFromMatrix(scoplib_matrix_p m, __isl_take isl_space *Space) {
isl_basic_map *bmap = isl_basic_map_universe(isl_space_copy(Space));
for (unsigned i = 0; i < m->NbRows; ++i) {
isl_constraint *c;
- c = constraintFromMatrixRowFull(m->p[i], Space);
+ c = constraintFromMatrixRowFull(m->p[i], isl_space_copy(Space));
bmap = isl_basic_map_add_constraint(bmap, c);
}
+ isl_space_free(Space);
+
return isl_map_from_basic_map(bmap);
}
@@ -638,16 +644,10 @@ isl_map *scatteringForStmt(scoplib_matrix_p m, ScopStmt *PollyStmt,
Space = isl_space_set_tuple_name(Space, isl_dim_out, "scattering");
Space = isl_space_set_tuple_name(Space, isl_dim_in, PollyStmt->getBaseName());
- isl_map *map;
-
if (scatteringDims == -1)
- map = mapFromMatrix(m, Space);
- else
- map = mapFromMatrix(m, Space, scatteringDims);
-
- isl_space_free(Space);
+ return mapFromMatrix(m, Space);
- return map;
+ return mapFromMatrix(m, Space, scatteringDims);
}
unsigned maxScattering(scoplib_statement_p stmt) {
OpenPOWER on IntegriCloud