Skip to content
This repository was archived by the owner on Apr 28, 2023. It is now read-only.

Commit 02207b3

Browse files
author
Sven Verdoolaege
committed
no longer consider ScheduleTreeElemMappingFilter to be a subclass of filter
This type was introduced as filter because it is used as a filter during AST generation. However, AST generation is performed on an isl schedule tree and a ScheduleTreeElemMappingFilter can easily be converted to an isl filter independently of whether ScheduleTreeElemMappingFilter itself is a filter. Having ScheduleTreeElemMappingFilter as a subclass is causing more problems than it is worth because every time a reference is made to a filter, a careful consideration has to be made whether or not to include the mapping filters. Simply stop considering ScheduleTreeElemMappingFilter objects as filters and deal with them specifically when needed. In order to minimize the changes, the filter_ field is copied into ScheduleTreeElemMappingFilter. This filter_ contains information that can be derived from the mapping, so it could be replaced by a function that computes the filter later.
1 parent e1a705e commit 02207b3

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

tc/core/polyhedral/schedule_tree_elem.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ struct ScheduleTreeElemFilter : public ScheduleTreeElemBase {
139139
}
140140
};
141141

142-
struct ScheduleTreeElemMappingFilter : public ScheduleTreeElemFilter {
142+
struct ScheduleTreeElemMappingFilter : public ScheduleTreeElemBase {
143143
using Mapping = std::unordered_map<
144144
mapping::MappingId,
145145
isl::union_pw_aff,
@@ -150,9 +150,9 @@ struct ScheduleTreeElemMappingFilter : public ScheduleTreeElemFilter {
150150
detail::ScheduleTreeType::MappingFilter;
151151
ScheduleTreeElemMappingFilter() = delete;
152152
ScheduleTreeElemMappingFilter(const ScheduleTreeElemMappingFilter& eb)
153-
: ScheduleTreeElemFilter(eb.filter_), mapping(eb.mapping) {}
153+
: mapping(eb.mapping), filter_(eb.filter_) {}
154154
ScheduleTreeElemMappingFilter(const Mapping& mapping)
155-
: ScheduleTreeElemFilter(isl::union_set()), mapping(mapping) {
155+
: mapping(mapping), filter_(isl::union_set()) {
156156
TC_CHECK_GT(mapping.size(), 0u) << "empty mapping filter";
157157

158158
auto domain = mapping.cbegin()->second.domain();
@@ -181,6 +181,8 @@ struct ScheduleTreeElemMappingFilter : public ScheduleTreeElemFilter {
181181

182182
// Mapping from identifiers to affine functions on domain elements.
183183
const Mapping mapping;
184+
// Assignment of the affine functions to the identifiers as parameters.
185+
isl::union_set filter_;
184186
};
185187

186188
struct ScheduleTreeElemSequence : public ScheduleTreeElemBase {

0 commit comments

Comments
 (0)