[polly] r336362 - [ScopInfo] Move foldSizeConstantsToRight() to isl++
Tobias Grosser via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 5 08:23:28 PDT 2018
Author: grosser
Date: Thu Jul 5 08:23:28 2018
New Revision: 336362
URL: http://llvm.org/viewvc/llvm-project?rev=336362&view=rev
Log:
[ScopInfo] Move foldSizeConstantsToRight() to isl++
Summary: This patch updates the isl interface used in `foldSizeConstantsToRight()` to the new C++ interface.
Reviewers: chelini, grosser, philip.pfaffe, Meinersbur
Reviewed By: grosser
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D48965
Modified:
polly/trunk/lib/Analysis/ScopInfo.cpp
Modified: polly/trunk/lib/Analysis/ScopInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/Analysis/ScopInfo.cpp?rev=336362&r1=336361&r2=336362&view=diff
==============================================================================
--- polly/trunk/lib/Analysis/ScopInfo.cpp (original)
+++ polly/trunk/lib/Analysis/ScopInfo.cpp Thu Jul 5 08:23:28 2018
@@ -3313,97 +3313,74 @@ Scop::Scop(Region &R, ScalarEvolution &S
Scop::~Scop() = default;
void Scop::foldSizeConstantsToRight() {
- isl_union_set *Accessed = isl_union_map_range(getAccesses().release());
+ isl::union_set Accessed = getAccesses().range();
for (auto Array : arrays()) {
if (Array->getNumberOfDimensions() <= 1)
continue;
- isl_space *Space = Array->getSpace().release();
+ isl::space Space = Array->getSpace();
+ Space = Space.align_params(Accessed.get_space());
- Space = isl_space_align_params(Space, isl_union_set_get_space(Accessed));
-
- if (!isl_union_set_contains(Accessed, Space)) {
- isl_space_free(Space);
+ if (!Accessed.contains(Space))
continue;
- }
- isl_set *Elements = isl_union_set_extract_set(Accessed, Space);
-
- isl_map *Transform =
- isl_map_universe(isl_space_map_from_set(Array->getSpace().release()));
+ isl::set Elements = Accessed.extract_set(Space);
+ isl::map Transform = isl::map::universe(Array->getSpace().map_from_set());
std::vector<int> Int;
-
- int Dims = isl_set_dim(Elements, isl_dim_set);
+ int Dims = Elements.dim(isl::dim::set);
for (int i = 0; i < Dims; i++) {
- isl_set *DimOnly =
- isl_set_project_out(isl_set_copy(Elements), isl_dim_set, 0, i);
- DimOnly = isl_set_project_out(DimOnly, isl_dim_set, 1, Dims - i - 1);
- DimOnly = isl_set_lower_bound_si(DimOnly, isl_dim_set, 0, 0);
+ isl::set DimOnly = isl::set(Elements).project_out(isl::dim::set, 0, i);
+ DimOnly = DimOnly.project_out(isl::dim::set, 1, Dims - i - 1);
+ DimOnly = DimOnly.lower_bound_si(isl::dim::set, 0, 0);
- isl_basic_set *DimHull = isl_set_affine_hull(DimOnly);
+ isl::basic_set DimHull = DimOnly.affine_hull();
if (i == Dims - 1) {
Int.push_back(1);
- Transform = isl_map_equate(Transform, isl_dim_in, i, isl_dim_out, i);
- isl_basic_set_free(DimHull);
+ Transform = Transform.equate(isl::dim::in, i, isl::dim::out, i);
continue;
}
- if (isl_basic_set_dim(DimHull, isl_dim_div) == 1) {
- isl_aff *Diff = isl_basic_set_get_div(DimHull, 0);
- isl_val *Val = isl_aff_get_denominator_val(Diff);
- isl_aff_free(Diff);
+ if (DimHull.dim(isl::dim::div) == 1) {
+ isl::aff Diff = DimHull.get_div(0);
+ isl::val Val = Diff.get_denominator_val();
int ValInt = 1;
-
- if (isl_val_is_int(Val)) {
+ if (Val.is_int()) {
auto ValAPInt = APIntFromVal(Val);
if (ValAPInt.isSignedIntN(32))
ValInt = ValAPInt.getSExtValue();
} else {
- isl_val_free(Val);
}
Int.push_back(ValInt);
-
- isl_constraint *C = isl_constraint_alloc_equality(
- isl_local_space_from_space(isl_map_get_space(Transform)));
- C = isl_constraint_set_coefficient_si(C, isl_dim_out, i, ValInt);
- C = isl_constraint_set_coefficient_si(C, isl_dim_in, i, -1);
- Transform = isl_map_add_constraint(Transform, C);
- isl_basic_set_free(DimHull);
+ isl::constraint C = isl::constraint::alloc_equality(
+ isl::local_space(Transform.get_space()));
+ C = C.set_coefficient_si(isl::dim::out, i, ValInt);
+ C = C.set_coefficient_si(isl::dim::in, i, -1);
+ Transform = Transform.add_constraint(C);
continue;
}
- isl_basic_set *ZeroSet = isl_basic_set_copy(DimHull);
- ZeroSet = isl_basic_set_fix_si(ZeroSet, isl_dim_set, 0, 0);
+ isl::basic_set ZeroSet = isl::basic_set(DimHull);
+ ZeroSet = ZeroSet.fix_si(isl::dim::set, 0, 0);
int ValInt = 1;
- if (isl_basic_set_is_equal(ZeroSet, DimHull)) {
+ if (ZeroSet.is_equal(DimHull)) {
ValInt = 0;
}
Int.push_back(ValInt);
- Transform = isl_map_equate(Transform, isl_dim_in, i, isl_dim_out, i);
- isl_basic_set_free(DimHull);
- isl_basic_set_free(ZeroSet);
+ Transform = Transform.equate(isl::dim::in, i, isl::dim::out, i);
}
- isl_set *MappedElements = isl_map_domain(isl_map_copy(Transform));
-
- if (!isl_set_is_subset(Elements, MappedElements)) {
- isl_set_free(Elements);
- isl_set_free(MappedElements);
- isl_map_free(Transform);
+ isl::set MappedElements = isl::map(Transform).domain();
+ if (!Elements.is_subset(MappedElements))
continue;
- }
-
- isl_set_free(MappedElements);
bool CanFold = true;
-
if (Int[0] <= 1)
CanFold = false;
@@ -3412,18 +3389,13 @@ void Scop::foldSizeConstantsToRight() {
if (Int[0] != Int[i] && Int[i])
CanFold = false;
- if (!CanFold) {
- isl_set_free(Elements);
- isl_map_free(Transform);
+ if (!CanFold)
continue;
- }
for (auto &Access : AccessFunctions)
if (Access->getScopArrayInfo() == Array)
- Access->setAccessRelation(Access->getAccessRelation().apply_range(
- isl::manage_copy(Transform)));
-
- isl_map_free(Transform);
+ Access->setAccessRelation(
+ Access->getAccessRelation().apply_range(Transform));
std::vector<const SCEV *> Sizes;
for (unsigned i = 0; i < NumDims; i++) {
@@ -3435,10 +3407,7 @@ void Scop::foldSizeConstantsToRight() {
}
Array->updateSizes(Sizes, false /* CheckConsistency */);
-
- isl_set_free(Elements);
}
- isl_union_set_free(Accessed);
}
void Scop::markFortranArrays() {
More information about the llvm-commits
mailing list