Skip to content

Commit 2ee7262

Browse files
committed
compiler: Avoid spurious items in sub_iters and dirs
1 parent 30581ce commit 2ee7262

1 file changed

Lines changed: 9 additions & 8 deletions

File tree

devito/ir/support/space.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -789,17 +789,19 @@ def __init__(self, intervals, sub_iterators=None, directions=None):
789789
super().__init__(intervals)
790790

791791
# Normalize sub-iterators
792-
sub_iterators = dict([(k, tuple(filter_ordered(as_tuple(v))))
793-
for k, v in (sub_iterators or {}).items()])
792+
sub_iterators = sub_iterators or {}
793+
sub_iterators = {d: tuple(filter_ordered(as_tuple(v)))
794+
for d, v in sub_iterators.items() if d in self.intervals}
794795
sub_iterators.update({i.dim: () for i in self.intervals
795796
if i.dim not in sub_iterators})
796797
self._sub_iterators = frozendict(sub_iterators)
797798

798799
# Normalize directions
799-
if directions is None:
800-
self._directions = frozendict([(i.dim, Any) for i in self.intervals])
801-
else:
802-
self._directions = frozendict(directions)
800+
directions = directions or {}
801+
directions = {d: v for d, v in directions.items() if d in self.intervals}
802+
directions.update({i.dim: Any for i in self.intervals
803+
if i.dim not in directions})
804+
self._directions = frozendict(directions)
803805

804806
def __repr__(self):
805807
ret = ', '.join([f"{repr(i)}{repr(self.directions[i.dim])}"
@@ -821,8 +823,7 @@ def __lt__(self, other):
821823
return len(self.itintervals) < len(other.itintervals)
822824

823825
def __hash__(self):
824-
return hash((super().__hash__(), self.sub_iterators,
825-
self.directions))
826+
return hash((super().__hash__(), self.sub_iterators, self.directions))
826827

827828
def __contains__(self, d):
828829
try:

0 commit comments

Comments
 (0)