[polly] r300323 - Use isl C++ foreach implementation
Tobias Grosser via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 21 04:08:10 PDT 2017
On Thu, Apr 20, 2017, at 04:52 PM, Michael Kruse via llvm-commits wrote:
> Did you forget to remove the declarations of foreachElt in GICHelper.h?
r300965
Best,
Tobias
>
> Michael
>
> 2017-04-14 15:39 GMT+02:00 Tobias Grosser via llvm-commits
> <llvm-commits at lists.llvm.org>:
> > Author: grosser
> > Date: Fri Apr 14 08:39:40 2017
> > New Revision: 300323
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=300323&view=rev
> > Log:
> > Use isl C++ foreach implementation
> >
> > This commit switches Polly over to the isl::obj::foreach_* implementation, which
> > is part of the new isl bindings and follows the foreach pattern established in
> > Polly by Michael Kruse.
> >
> > The original isl C function:
> >
> > isl_stat isl_union_set_foreach_set(__isl_keep isl_union_set *uset,
> > isl_stat (*fn)(__isl_take isl_set *set, void *user), void *user);
> >
> > which required the user to define a static callback function to which all
> > interesting parameters are passed via a 'void *' user-pointer, is on the
> > C++ side available as a function that takes a std::function<>, which can
> > carry any additional arguments without the need for a user pointer:
> >
> > stat UnionSet::foreach_set(const std::function<stat(set)> &fn) const;
> >
> > The following code illustrates the use of the new C++ interface:
> >
> > auto Lambda = [=, &Result](isl::set Set) -> isl::stat {
> > auto Shifted = shiftDimension(Set, Pos, Amount);
> > Result = Result.add(Shifted);
> > return isl::stat::ok;
> > }
> >
> > UnionSet.foreach_set(Lambda);
> >
> > Polly had some specialized foreach functions which did not require the lambdas
> > to return a status flag. We remove these functions in this commit to move Polly
> > completely over to the new isl interface. We may in the future discuss if
> > functors without return values can be supported easily.
> >
> > Another extension proposed by Michael Kruse is the use of C++ iterators to allow
> > the use of normal for loops to iterate over these sets. Such an extension would
> > allow us to further simplify the code.
> >
> > Reviewed-by: Michael Kruse <llvm at meinersbur.de>
> >
> > Differential Revision: https://reviews.llvm.org/D30620
> >
> > Modified:
> > polly/trunk/lib/Support/GICHelper.cpp
> > polly/trunk/lib/Support/ISLTools.cpp
> > polly/trunk/lib/Transform/FlattenAlgo.cpp
> > polly/trunk/lib/Transform/FlattenSchedule.cpp
> > polly/trunk/unittests/DeLICM/DeLICMTest.cpp
> > polly/trunk/unittests/Isl/IslTest.cpp
> >
> > Modified: polly/trunk/lib/Support/GICHelper.cpp
> > URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/Support/GICHelper.cpp?rev=300323&r1=300322&r2=300323&view=diff
> > ==============================================================================
> > --- polly/trunk/lib/Support/GICHelper.cpp (original)
> > +++ polly/trunk/lib/Support/GICHelper.cpp Fri Apr 14 08:39:40 2017
> > @@ -203,106 +203,3 @@ std::string polly::getIslCompatibleName(
> > ValStr.erase(0, 1);
> > return getIslCompatibleName(Prefix, ValStr, Suffix);
> > }
> > -
> > -void polly::foreachElt(const isl::map &Map,
> > - const std::function<void(isl::basic_map)> &F) {
> > - isl_map_foreach_basic_map(
> > - Map.keep(),
> > - [](__isl_take isl_basic_map *BMap, void *User) -> isl_stat {
> > - auto &F =
> > - *static_cast<const std::function<void(isl::basic_map)> *>(User);
> > - F(give(BMap));
> > - return isl_stat_ok;
> > - },
> > - const_cast<void *>(static_cast<const void *>(&F)));
> > -}
> > -
> > -void polly::foreachElt(const isl::set &Set,
> > - const std::function<void(isl::basic_set)> &F) {
> > - isl_set_foreach_basic_set(
> > - Set.keep(),
> > - [](__isl_take isl_basic_set *BSet, void *User) -> isl_stat {
> > - auto &F =
> > - *static_cast<const std::function<void(isl::basic_set)> *>(User);
> > - F(give(BSet));
> > - return isl_stat_ok;
> > - },
> > - const_cast<void *>(static_cast<const void *>(&F)));
> > -}
> > -
> > -void polly::foreachElt(const isl::union_map &UMap,
> > - const std::function<void(isl::map Map)> &F) {
> > - isl_union_map_foreach_map(
> > - UMap.keep(),
> > - [](__isl_take isl_map *Map, void *User) -> isl_stat {
> > - auto &F = *static_cast<const std::function<void(isl::map)> *>(User);
> > - F(give(Map));
> > - return isl_stat_ok;
> > - },
> > - const_cast<void *>(static_cast<const void *>(&F)));
> > -}
> > -
> > -void polly::foreachElt(const isl::union_set &USet,
> > - const std::function<void(isl::set Set)> &F) {
> > - isl_union_set_foreach_set(
> > - USet.keep(),
> > - [](__isl_take isl_set *Set, void *User) -> isl_stat {
> > - auto &F = *static_cast<const std::function<void(isl::set)> *>(User);
> > - F(give(Set));
> > - return isl_stat_ok;
> > - },
> > - const_cast<void *>(static_cast<const void *>(&F)));
> > -}
> > -
> > -void polly::foreachElt(const isl::union_pw_aff &UPwAff,
> > - const std::function<void(isl::pw_aff)> &F) {
> > - isl_union_pw_aff_foreach_pw_aff(
> > - UPwAff.keep(),
> > - [](__isl_take isl_pw_aff *PwAff, void *User) -> isl_stat {
> > - auto &F = *static_cast<const std::function<void(isl::pw_aff)> *>(User);
> > - F(give(PwAff));
> > - return isl_stat_ok;
> > - },
> > - const_cast<void *>(static_cast<const void *>(&F)));
> > -}
> > -
> > -isl_stat
> > -polly::foreachEltWithBreak(const isl::map &Map,
> > - const std::function<isl_stat(isl::basic_map)> &F) {
> > - return isl_map_foreach_basic_map(
> > - Map.keep(),
> > - [](__isl_take isl_basic_map *BMap, void *User) -> isl_stat {
> > - auto &F =
> > - *static_cast<const std::function<isl_stat(isl::basic_map)> *>(User);
> > - return F(give(BMap));
> > - },
> > - const_cast<void *>(static_cast<const void *>(&F)));
> > -}
> > -
> > -isl_stat
> > -polly::foreachEltWithBreak(const isl::union_map &UMap,
> > - const std::function<isl_stat(isl::map Map)> &F) {
> > - return isl_union_map_foreach_map(
> > - UMap.keep(),
> > - [](__isl_take isl_map *Map, void *User) -> isl_stat {
> > - auto &F =
> > - *static_cast<const std::function<isl_stat(isl::map Map)> *>(User);
> > - return F(give(Map));
> > - },
> > - const_cast<void *>(static_cast<const void *>(&F)));
> > -}
> > -
> > -isl_stat polly::foreachPieceWithBreak(
> > - const isl::pw_aff &PwAff,
> > - const std::function<isl_stat(isl::set, isl::aff)> &F) {
> > - return isl_pw_aff_foreach_piece(
> > - PwAff.keep(),
> > - [](__isl_take isl_set *Domain, __isl_take isl_aff *Aff,
> > - void *User) -> isl_stat {
> > - auto &F =
> > - *static_cast<const std::function<isl_stat(isl::set, isl::aff)> *>(
> > - User);
> > - return F(give(Domain), give(Aff));
> > - },
> > - const_cast<void *>(static_cast<const void *>(&F)));
> > -}
> >
> > Modified: polly/trunk/lib/Support/ISLTools.cpp
> > URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/Support/ISLTools.cpp?rev=300323&r1=300322&r2=300323&view=diff
> > ==============================================================================
> > --- polly/trunk/lib/Support/ISLTools.cpp (original)
> > +++ polly/trunk/lib/Support/ISLTools.cpp Fri Apr 14 08:39:40 2017
> > @@ -89,9 +89,10 @@ isl::map polly::beforeScatter(isl::map M
> >
> > isl::union_map polly::beforeScatter(isl::union_map UMap, bool Strict) {
> > auto Result = give(isl_union_map_empty(isl_union_map_get_space(UMap.keep())));
> > - foreachElt(UMap, [=, &Result](isl::map Map) {
> > + UMap.foreach_map([=, &Result](isl::map Map) -> isl::stat {
> > auto After = beforeScatter(Map, Strict);
> > Result = give(isl_union_map_add_map(Result.take(), After.take()));
> > + return isl::stat::ok;
> > });
> > return Result;
> > }
> > @@ -105,9 +106,10 @@ isl::map polly::afterScatter(isl::map Ma
> >
> > isl::union_map polly::afterScatter(const isl::union_map &UMap, bool Strict) {
> > auto Result = give(isl_union_map_empty(isl_union_map_get_space(UMap.keep())));
> > - foreachElt(UMap, [=, &Result](isl::map Map) {
> > + UMap.foreach_map([=, &Result](isl::map Map) -> isl::stat {
> > auto After = afterScatter(Map, Strict);
> > Result = give(isl_union_map_add_map(Result.take(), After.take()));
> > + return isl::stat::ok;
> > });
> > return Result;
> > }
> > @@ -158,8 +160,9 @@ isl::set polly::singleton(isl::union_set
> >
> > unsigned polly::getNumScatterDims(const isl::union_map &Schedule) {
> > unsigned Dims = 0;
> > - foreachElt(Schedule, [&Dims](isl::map Map) {
> > + Schedule.foreach_map([&Dims](isl::map Map) -> isl::stat {
> > Dims = std::max(Dims, isl_map_dim(Map.keep(), isl_dim_out));
> > + return isl::stat::ok;
> > });
> > return Dims;
> > }
> > @@ -176,13 +179,14 @@ isl::space polly::getScatterSpace(const
> > isl::union_map polly::makeIdentityMap(const isl::union_set &USet,
> > bool RestrictDomain) {
> > auto Result = give(isl_union_map_empty(isl_union_set_get_space(USet.keep())));
> > - foreachElt(USet, [=, &Result](isl::set Set) {
> > + USet.foreach_set([=, &Result](isl::set Set) -> isl::stat {
> > auto IdentityMap = give(isl_map_identity(
> > isl_space_map_from_set(isl_set_get_space(Set.keep()))));
> > if (RestrictDomain)
> > IdentityMap =
> > give(isl_map_intersect_domain(IdentityMap.take(), Set.take()));
> > Result = give(isl_union_map_add_map(Result.take(), IdentityMap.take()));
> > + return isl::stat::ok;
> > });
> > return Result;
> > }
> > @@ -198,9 +202,10 @@ isl::map polly::reverseDomain(isl::map M
> >
> > isl::union_map polly::reverseDomain(const isl::union_map &UMap) {
> > auto Result = give(isl_union_map_empty(isl_union_map_get_space(UMap.keep())));
> > - foreachElt(UMap, [=, &Result](isl::map Map) {
> > + UMap.foreach_map([=, &Result](isl::map Map) -> isl::stat {
> > auto Reversed = reverseDomain(std::move(Map));
> > Result = give(isl_union_map_add_map(Result.take(), Reversed.take()));
> > + return isl::stat::ok;
> > });
> > return Result;
> > }
> > @@ -219,9 +224,10 @@ isl::set polly::shiftDim(isl::set Set, i
> >
> > isl::union_set polly::shiftDim(isl::union_set USet, int Pos, int Amount) {
> > auto Result = give(isl_union_set_empty(isl_union_set_get_space(USet.keep())));
> > - foreachElt(USet, [=, &Result](isl::set Set) {
> > + USet.foreach_set([=, &Result](isl::set Set) -> isl::stat {
> > auto Shifted = shiftDim(Set, Pos, Amount);
> > Result = give(isl_union_set_add_set(Result.take(), Shifted.take()));
> > + return isl::stat::ok;
> > });
> > return Result;
> > }
> > @@ -259,9 +265,10 @@ isl::union_map polly::shiftDim(isl::unio
> > int Amount) {
> > auto Result = isl::union_map::empty(UMap.get_space());
> >
> > - foreachElt(UMap, [=, &Result](isl::map Map) {
> > + UMap.foreach_map([=, &Result](isl::map Map) -> isl::stat {
> > auto Shifted = shiftDim(Map, Dim, Pos, Amount);
> > Result = std::move(Result).add_map(Shifted);
> > + return isl::stat::ok;
> > });
> > return Result;
> > }
> > @@ -475,9 +482,10 @@ isl::map polly::distributeDomain(isl::ma
> >
> > isl::union_map polly::distributeDomain(isl::union_map UMap) {
> > auto Result = give(isl_union_map_empty(isl_union_map_get_space(UMap.keep())));
> > - foreachElt(UMap, [=, &Result](isl::map Map) {
> > + UMap.foreach_map([=, &Result](isl::map Map) {
> > auto Distributed = distributeDomain(Map);
> > Result = give(isl_union_map_add_map(Result.take(), Distributed.copy()));
> > + return isl::stat::ok;
> > });
> > return Result;
> > }
> >
> > Modified: polly/trunk/lib/Transform/FlattenAlgo.cpp
> > URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/Transform/FlattenAlgo.cpp?rev=300323&r1=300322&r2=300323&view=diff
> > ==============================================================================
> > --- polly/trunk/lib/Transform/FlattenAlgo.cpp (original)
> > +++ polly/trunk/lib/Transform/FlattenAlgo.cpp Fri Apr 14 08:39:40 2017
> > @@ -52,20 +52,20 @@ bool isVariableDim(const isl::basic_map
> >
> > /// Whether Map's first out dimension is no constant nor piecewise constant.
> > bool isVariableDim(const isl::map &Map) {
> > - return foreachEltWithBreak(Map, [](isl::basic_map BMap) -> isl_stat {
> > + return Map.foreach_basic_map([](isl::basic_map BMap) -> isl::stat {
> > if (isVariableDim(BMap))
> > - return isl_stat_error;
> > - return isl_stat_ok;
> > - });
> > + return isl::stat::error;
> > + return isl::stat::ok;
> > + }) == isl::stat::ok;
> > }
> >
> > /// Whether UMap's first out dimension is no (piecewise) constant.
> > bool isVariableDim(const isl::union_map &UMap) {
> > - return foreachEltWithBreak(UMap, [](isl::map Map) -> isl_stat {
> > + return UMap.foreach_map([](isl::map Map) -> isl::stat {
> > if (isVariableDim(Map))
> > - return isl_stat_error;
> > - return isl_stat_ok;
> > - });
> > + return isl::stat::error;
> > + return isl::stat::ok;
> > + }) == isl::stat::ok;
> > }
> >
> > /// If @p PwAff maps to a constant, return said constant. If @p Max/@p Min, it
> > @@ -74,39 +74,39 @@ bool isVariableDim(const isl::union_map
> > isl::val getConstant(isl::pw_aff PwAff, bool Max, bool Min) {
> > assert(!Max || !Min);
> > isl::val Result;
> > - foreachPieceWithBreak(PwAff, [=, &Result](isl::set Set, isl::aff Aff) {
> > + PwAff.foreach_piece([=, &Result](isl::set Set, isl::aff Aff) -> isl::stat {
> > if (Result && Result.is_nan())
> > - return isl_stat_ok;
> > + return isl::stat::ok;
> >
> > // TODO: If Min/Max, we can also determine a minimum/maximum value if
> > // Set is constant-bounded.
> > if (!Aff.is_cst()) {
> > Result = isl::val::nan(Aff.get_ctx());
> > - return isl_stat_error;
> > + return isl::stat::error;
> > }
> >
> > auto ThisVal = Aff.get_constant();
> > if (!Result) {
> > Result = ThisVal;
> > - return isl_stat_ok;
> > + return isl::stat::ok;
> > }
> >
> > if (Result.eq(ThisVal))
> > - return isl_stat_ok;
> > + return isl::stat::ok;
> >
> > if (Max && ThisVal.gt(Result)) {
> > Result = ThisVal;
> > - return isl_stat_ok;
> > + return isl::stat::ok;
> > }
> >
> > if (Min && ThisVal.lt(Result)) {
> > Result = ThisVal;
> > - return isl_stat_ok;
> > + return isl::stat::ok;
> > }
> >
> > // Not compatible
> > Result = isl::val::nan(Aff.get_ctx());
> > - return isl_stat_error;
> > + return isl::stat::error;
> > });
> > return Result;
> > }
> > @@ -117,11 +117,12 @@ isl::union_pw_aff subtract(isl::union_pw
> > return UPwAff;
> >
> > auto Result = isl::union_pw_aff::empty(UPwAff.get_space());
> > - foreachElt(UPwAff, [=, &Result](isl::pw_aff PwAff) {
> > + UPwAff.foreach_pw_aff([=, &Result](isl::pw_aff PwAff) -> isl::stat {
> > auto ValAff =
> > isl::pw_aff(isl::set::universe(PwAff.get_space().domain()), Val);
> > auto Subtracted = PwAff.sub(ValAff);
> > Result = Result.union_add(isl::union_pw_aff(Subtracted));
> > + return isl::stat::ok;
> > });
> > return Result;
> > }
> > @@ -132,11 +133,12 @@ isl::union_pw_aff multiply(isl::union_pw
> > return UPwAff;
> >
> > auto Result = isl::union_pw_aff::empty(UPwAff.get_space());
> > - foreachElt(UPwAff, [=, &Result](isl::pw_aff PwAff) {
> > + UPwAff.foreach_pw_aff([=, &Result](isl::pw_aff PwAff) -> isl::stat {
> > auto ValAff =
> > isl::pw_aff(isl::set::universe(PwAff.get_space().domain()), Val);
> > auto Multiplied = PwAff.mul(ValAff);
> > Result = Result.union_add(Multiplied);
> > + return isl::stat::ok;
> > });
> > return Result;
> > }
> > @@ -152,9 +154,10 @@ isl::union_map scheduleProjectOut(const
> > have no effect on schedule ranges */
> >
> > auto Result = isl::union_map::empty(UMap.get_space());
> > - foreachElt(UMap, [=, &Result](isl::map Map) {
> > + UMap.foreach_map([=, &Result](isl::map Map) -> isl::stat {
> > auto Outprojected = Map.project_out(isl::dim::out, first, n);
> > Result = Result.add_map(Outprojected);
> > + return isl::stat::ok;
> > });
> > return Result;
> > }
> > @@ -166,8 +169,9 @@ isl::union_map scheduleProjectOut(const
> > /// number of dimensions is not supported by the other code in this file.
> > size_t scheduleScatterDims(const isl::union_map &Schedule) {
> > unsigned Dims = 0;
> > - foreachElt(Schedule, [&Dims](isl::map Map) {
> > + Schedule.foreach_map([&Dims](isl::map Map) -> isl::stat {
> > Dims = std::max(Dims, Map.dim(isl::dim::out));
> > + return isl::stat::ok;
> > });
> > return Dims;
> > }
> > @@ -175,11 +179,12 @@ size_t scheduleScatterDims(const isl::un
> > /// Return the @p pos' range dimension, converted to an isl_union_pw_aff.
> > isl::union_pw_aff scheduleExtractDimAff(isl::union_map UMap, unsigned pos) {
> > auto SingleUMap = isl::union_map::empty(UMap.get_space());
> > - foreachElt(UMap, [=, &SingleUMap](isl::map Map) {
> > + UMap.foreach_map([=, &SingleUMap](isl::map Map) -> isl::stat {
> > auto MapDims = Map.dim(isl::dim::out);
> > auto SingleMap = Map.project_out(isl::dim::out, 0, pos);
> > SingleMap = SingleMap.project_out(isl::dim::out, 1, MapDims - pos - 1);
> > SingleUMap = SingleUMap.add_map(SingleMap);
> > + return isl::stat::ok;
> > });
> >
> > auto UAff = isl::union_pw_multi_aff(SingleUMap);
> >
> > Modified: polly/trunk/lib/Transform/FlattenSchedule.cpp
> > URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/Transform/FlattenSchedule.cpp?rev=300323&r1=300322&r2=300323&view=diff
> > ==============================================================================
> > --- polly/trunk/lib/Transform/FlattenSchedule.cpp (original)
> > +++ polly/trunk/lib/Transform/FlattenSchedule.cpp Fri Apr 14 08:39:40 2017
> > @@ -29,8 +29,10 @@ namespace {
> > /// Prints the schedule for each statements on a new line.
> > void printSchedule(raw_ostream &OS, const isl::union_map &Schedule,
> > int indent) {
> > - foreachElt(Schedule,
> > - [&OS, indent](isl::map Map) { OS.indent(indent) << Map << "\n"; });
> > + Schedule.foreach_map([&OS, indent](isl::map Map) -> isl::stat {
> > + OS.indent(indent) << Map << "\n";
> > + return isl::stat::ok;
> > + });
> > }
> >
> > /// Flatten the schedule stored in an polly::Scop.
> >
> > Modified: polly/trunk/unittests/DeLICM/DeLICMTest.cpp
> > URL: http://llvm.org/viewvc/llvm-project/polly/trunk/unittests/DeLICM/DeLICMTest.cpp?rev=300323&r1=300322&r2=300323&view=diff
> > ==============================================================================
> > --- polly/trunk/unittests/DeLICM/DeLICMTest.cpp (original)
> > +++ polly/trunk/unittests/DeLICM/DeLICMTest.cpp Fri Apr 14 08:39:40 2017
> > @@ -24,10 +24,11 @@ namespace {
> > /// Get the universes of all spaces in @p USet.
> > isl::union_set unionSpace(const isl::union_set &USet) {
> > auto Result = give(isl_union_set_empty(isl_union_set_get_space(USet.keep())));
> > - foreachElt(USet, [=, &Result](isl::set Set) {
> > + USet.foreach_set([=, &Result](isl::set Set) -> isl::stat {
> > auto Space = give(isl_set_get_space(Set.keep()));
> > auto Universe = give(isl_set_universe(Space.take()));
> > Result = give(isl_union_set_add_set(Result.take(), Universe.take()));
> > + return isl::stat::ok;
> > });
> > return Result;
> > }
> > @@ -43,10 +44,11 @@ void completeLifetime(isl::union_set Uni
> >
> > Known = isl::union_map::empty(ParamSpace);
> > Occupied = OccupiedAndKnown.domain();
> > - foreachElt(OccupiedAndKnown, [&Known](isl::map Map) {
> > + OccupiedAndKnown.foreach_map([&Known](isl::map Map) -> isl::stat {
> > if (isl_map_has_tuple_name(Map.keep(), isl_dim_out) != isl_bool_true)
> > - return;
> > + return isl::stat::ok;
> > Known = give(isl_union_map_add_map(Known.take(), Map.take()));
> > + return isl::stat::ok;
> > });
> > }
> >
> >
> > Modified: polly/trunk/unittests/Isl/IslTest.cpp
> > URL: http://llvm.org/viewvc/llvm-project/polly/trunk/unittests/Isl/IslTest.cpp?rev=300323&r1=300322&r2=300323&view=diff
> > ==============================================================================
> > --- polly/trunk/unittests/Isl/IslTest.cpp (original)
> > +++ polly/trunk/unittests/Isl/IslTest.cpp Fri Apr 14 08:39:40 2017
> > @@ -299,36 +299,40 @@ TEST(Isl, Foreach) {
> >
> > {
> > auto NumBMaps = 0;
> > - foreachElt(TestMap, [&](isl::basic_map BMap) {
> > + TestMap.foreach_basic_map([&](isl::basic_map BMap) -> isl::stat {
> > EXPECT_EQ(BMap, TestBMap);
> > NumBMaps++;
> > + return isl::stat::ok;
> > });
> > EXPECT_EQ(1, NumBMaps);
> > }
> >
> > {
> > auto NumBSets = 0;
> > - foreachElt(TestSet, [&](isl::basic_set BSet) {
> > + TestSet.foreach_basic_set([&](isl::basic_set BSet) -> isl::stat {
> > EXPECT_EQ(BSet, TestBSet);
> > NumBSets++;
> > + return isl::stat::ok;
> > });
> > EXPECT_EQ(1, NumBSets);
> > }
> >
> > {
> > auto NumMaps = 0;
> > - foreachElt(TestUMap, [&](isl::map Map) {
> > + TestUMap.foreach_map([&](isl::map Map) -> isl::stat {
> > EXPECT_EQ(Map, TestMap);
> > NumMaps++;
> > + return isl::stat::ok;
> > });
> > EXPECT_EQ(1, NumMaps);
> > }
> >
> > {
> > auto NumSets = 0;
> > - foreachElt(TestUSet, [&](isl::set Set) {
> > + TestUSet.foreach_set([&](isl::set Set) -> isl::stat {
> > EXPECT_EQ(Set, TestSet);
> > NumSets++;
> > + return isl::stat::ok;
> > });
> > EXPECT_EQ(1, NumSets);
> > }
> > @@ -336,32 +340,32 @@ TEST(Isl, Foreach) {
> > {
> > auto UPwAff = isl::union_pw_aff(TestUSet, isl::val::zero(Ctx.get()));
> > auto NumPwAffs = 0;
> > - foreachElt(UPwAff, [&](isl::pw_aff PwAff) {
> > + UPwAff.foreach_pw_aff([&](isl::pw_aff PwAff) -> isl::stat {
> > EXPECT_TRUE(PwAff.is_cst());
> > NumPwAffs++;
> > + return isl::stat::ok;
> > });
> > EXPECT_EQ(1, NumPwAffs);
> > }
> >
> > {
> > auto NumBMaps = 0;
> > - EXPECT_EQ(
> > - isl_stat_error,
> > - foreachEltWithBreak(TestMap, [&](isl::basic_map BMap) -> isl_stat {
> > - EXPECT_EQ(BMap, TestBMap);
> > - NumBMaps++;
> > - return isl_stat_error;
> > - }));
> > + EXPECT_EQ(isl::stat::error,
> > + TestMap.foreach_basic_map([&](isl::basic_map BMap) -> isl::stat {
> > + EXPECT_EQ(BMap, TestBMap);
> > + NumBMaps++;
> > + return isl::stat::error;
> > + }));
> > EXPECT_EQ(1, NumBMaps);
> > }
> >
> > {
> > auto NumMaps = 0;
> > - EXPECT_EQ(isl_stat_error,
> > - foreachEltWithBreak(TestUMap, [&](isl::map Map) -> isl_stat {
> > + EXPECT_EQ(isl::stat::error,
> > + TestUMap.foreach_map([&](isl::map Map) -> isl::stat {
> > EXPECT_EQ(Map, TestMap);
> > NumMaps++;
> > - return isl_stat_error;
> > + return isl::stat::error;
> > }));
> > EXPECT_EQ(1, NumMaps);
> > }
> > @@ -369,13 +373,12 @@ TEST(Isl, Foreach) {
> > {
> > auto TestPwAff = isl::pw_aff(TestSet, isl::val::zero(Ctx.get()));
> > auto NumPieces = 0;
> > - foreachPieceWithBreak(TestPwAff,
> > - [&](isl::set Domain, isl::aff Aff) -> isl_stat {
> > - EXPECT_EQ(Domain, TestSet);
> > - EXPECT_TRUE(Aff.is_cst());
> > - NumPieces++;
> > - return isl_stat_error;
> > - });
> > + TestPwAff.foreach_piece([&](isl::set Domain, isl::aff Aff) -> isl::stat {
> > + EXPECT_EQ(Domain, TestSet);
> > + EXPECT_TRUE(Aff.is_cst());
> > + NumPieces++;
> > + return isl::stat::error;
> > + });
> > EXPECT_EQ(1, NumPieces);
> > }
> > }
> >
> >
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list