@@ -118,7 +118,8 @@ foldl(const std::vector<const ScheduleTree*> vec, Func op, T init = T()) {
118
118
119
119
} // namespace detail
120
120
121
- inline isl::multi_union_pw_aff infixScheduleMupa (
121
+ template <typename Schedule>
122
+ inline isl::MultiUnionPwAff<Statement, Schedule> infixScheduleMupa (
122
123
const detail::ScheduleTree* root,
123
124
const detail::ScheduleTree* relativeRoot,
124
125
const detail::ScheduleTree* tree) {
@@ -127,13 +128,15 @@ inline isl::multi_union_pw_aff infixScheduleMupa(
127
128
auto domainElem = root->as <ScheduleTreeDomain>();
128
129
TC_CHECK (domainElem);
129
130
auto domain = domainElem->domain_ .universe ();
130
- auto zero = isl::multi_val::zero (domain.get_space ().set_from_params ());
131
- auto prefix = isl::multi_union_pw_aff (domain, zero);
131
+ auto zero = isl::MultiVal<Schedule>::zero (
132
+ domain.get_space ().add_unnamed_tuple_ui <Schedule>(0 ));
133
+ auto prefix = isl::MultiUnionPwAff<Statement, Schedule>(domain, zero);
132
134
prefix = foldl (
133
135
filterType<ScheduleTreeBand>(tree->ancestors (relativeRoot)),
134
- [](const ScheduleTree* st, isl::multi_union_pw_aff pref) {
136
+ [](const ScheduleTree* st,
137
+ isl::MultiUnionPwAff<Statement, Schedule> pref) {
135
138
auto mupa = st->as <ScheduleTreeBand>()->mupa_ ;
136
- return pref.flat_range_product (mupa);
139
+ return pref.template flat_range_product <Schedule> (mupa);
137
140
},
138
141
prefix);
139
142
return prefix;
@@ -143,8 +146,7 @@ template <typename Schedule>
143
146
inline isl::MultiUnionPwAff<Statement, Schedule> prefixScheduleMupa (
144
147
const detail::ScheduleTree* root,
145
148
const detail::ScheduleTree* tree) {
146
- auto prefix = infixScheduleMupa (root, root, tree);
147
- return isl::MultiUnionPwAff<Statement, Schedule>(prefix);
149
+ return infixScheduleMupa<Schedule>(root, root, tree);
148
150
}
149
151
150
152
template <typename Schedule>
0 commit comments