@@ -92,7 +92,8 @@ foldl(const std::vector<const ScheduleTree*> vec, Func op, T init = T()) {
9292
9393} // namespace detail
9494
95- inline isl::multi_union_pw_aff infixScheduleMupa (
95+ template <typename Schedule>
96+ inline isl::MultiUnionPwAff<Statement, Schedule> infixScheduleMupa (
9697 const detail::ScheduleTree* root,
9798 const detail::ScheduleTree* relativeRoot,
9899 const detail::ScheduleTree* tree) {
@@ -101,13 +102,15 @@ inline isl::multi_union_pw_aff infixScheduleMupa(
101102 auto domainElem = root->as <ScheduleTreeDomain>();
102103 TC_CHECK (domainElem);
103104 auto domain = domainElem->domain_ .universe ();
104- auto zero = isl::multi_val::zero (domain.get_space ().set_from_params ());
105- auto prefix = isl::multi_union_pw_aff (domain, zero);
105+ auto zero = isl::MultiVal<Schedule>::zero (
106+ domain.get_space ().add_unnamed_tuple_ui <Schedule>(0 ));
107+ auto prefix = isl::MultiUnionPwAff<Statement, Schedule>(domain, zero);
106108 prefix = foldl (
107109 filterType<ScheduleTreeBand>(tree->ancestors (relativeRoot)),
108- [](const ScheduleTree* st, isl::multi_union_pw_aff pref) {
110+ [](const ScheduleTree* st,
111+ isl::MultiUnionPwAff<Statement, Schedule> pref) {
109112 auto mupa = st->as <ScheduleTreeBand>()->mupa_ ;
110- return pref.flat_range_product (mupa);
113+ return pref.template flat_range_product <Schedule> (mupa);
111114 },
112115 prefix);
113116 return prefix;
@@ -117,8 +120,7 @@ template <typename Schedule>
117120inline isl::MultiUnionPwAff<Statement, Schedule> prefixScheduleMupa (
118121 const detail::ScheduleTree* root,
119122 const detail::ScheduleTree* tree) {
120- auto prefix = infixScheduleMupa (root, root, tree);
121- return isl::MultiUnionPwAff<Statement, Schedule>(prefix);
123+ return infixScheduleMupa<Schedule>(root, root, tree);
122124}
123125
124126template <typename Schedule>
0 commit comments