From 0453ccff6bf3a4e21b319f355aa314ceec7e1ddd Mon Sep 17 00:00:00 2001 From: Tobias Grosser Date: Tue, 17 Jul 2018 07:08:06 +0000 Subject: [DependenceInfo] Use isl++ to replace foreach_set with for loop --- polly/lib/Analysis/DependenceInfo.cpp | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) (limited to 'polly') diff --git a/polly/lib/Analysis/DependenceInfo.cpp b/polly/lib/Analysis/DependenceInfo.cpp index ff73b9ec14d..b58db9a7f92 100644 --- a/polly/lib/Analysis/DependenceInfo.cpp +++ b/polly/lib/Analysis/DependenceInfo.cpp @@ -25,6 +25,7 @@ #include "polly/Options.h" #include "polly/ScopInfo.h" #include "polly/Support/GICHelper.h" +#include "polly/Support/ISLTools.h" #include "llvm/Support/Debug.h" #include #include @@ -189,12 +190,10 @@ static void collectInfo(Scop &S, isl_union_map *&Read, } /// Fix all dimension of @p Zero to 0 and add it to @p user -static isl_stat fixSetToZero(__isl_take isl_set *Zero, void *user) { - isl_union_set **User = (isl_union_set **)user; - for (unsigned i = 0; i < isl_set_dim(Zero, isl_dim_set); i++) - Zero = isl_set_fix_si(Zero, isl_dim_set, i, 0); - *User = isl_union_set_add_set(*User, Zero); - return isl_stat_ok; +static void fixSetToZero(isl::set Zero, isl::union_set *User) { + for (unsigned i = 0; i < Zero.dim(isl::dim::set); i++) + Zero = Zero.fix_si(isl::dim::set, i, 0); + *User = User->add_set(Zero); } /// Compute the privatization dependences for a given dependency @p Map @@ -256,9 +255,14 @@ void Dependences::addPrivatizationDependences() { // want to eliminate here. isl_union_set *UDeltas = isl_union_map_deltas(isl_union_map_copy(TC_RED)); isl_union_set *Universe = isl_union_set_universe(isl_union_set_copy(UDeltas)); - isl_union_set *Zero = isl_union_set_empty(isl_union_set_get_space(Universe)); - isl_union_set_foreach_set(Universe, fixSetToZero, &Zero); - isl_union_map *NonPositive = isl_union_set_lex_le_union_set(UDeltas, Zero); + isl::union_set Zero = + isl::manage(isl_union_set_empty(isl_union_set_get_space(Universe))); + + for (isl::set Set : isl::manage_copy(Universe).get_set_list()) + fixSetToZero(Set, &Zero); + + isl_union_map *NonPositive = + isl_union_set_lex_le_union_set(UDeltas, Zero.release()); TC_RED = isl_union_map_subtract(TC_RED, NonPositive); -- cgit v1.2.3