Skip to content

Commit ff1ff76

Browse files
committed
compiler: fix empty node
1 parent f7edc62 commit ff1ff76

4 files changed

Lines changed: 10 additions & 4 deletions

File tree

devito/ir/iet/nodes.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
'Increment', 'Return', 'While', 'ListMajor', 'ParallelIteration',
3131
'ParallelBlock', 'Dereference', 'Lambda', 'SyncSpot', 'Pragma',
3232
'DummyExpr', 'BlankLine', 'ParallelTree', 'BusyWait', 'UsingNamespace',
33-
'Using', 'CallableBody', 'Transfer']
33+
'Using', 'CallableBody', 'Transfer', 'EmptyList']
3434

3535
# First-class IET nodes
3636

@@ -218,6 +218,11 @@ def __repr__(self):
218218
len(self.body), len(self.footer))
219219

220220

221+
class EmptyList(List):
222+
"""A plain List node without a body, such as a header/footer only"""
223+
_traversable = []
224+
225+
221226
class Block(List):
222227

223228
"""A sequence of Nodes, wrapped in a block {...}."""

devito/ir/iet/visitors.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1331,7 +1331,7 @@ def visit_Node(self, o, **kwargs):
13311331
handle = self.mapper[o]
13321332
return self.transform(o, handle, **kwargs)
13331333
children = [self._visit(i, **kwargs) for i in o.children]
1334-
if o._traversable and not any(children) and not o.args_frozen:
1334+
if o._traversable and not any(children) and any(o.children):
13351335
return None
13361336
return o._rebuild(*children, **o.args_frozen)
13371337

devito/passes/iet/misc.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from devito.finite_differences import Max, Min
88
from devito.finite_differences.differentiable import SafeInv
99
from devito.logger import warning
10-
from devito.ir import (Any, Forward, DummyExpr, Iteration, List, Prodder,
10+
from devito.ir import (Any, Forward, DummyExpr, Iteration, EmptyList, Prodder,
1111
FindApplications, FindNodes, FindSymbols, Transformer,
1212
Uxreplace, filter_iterations, retrieve_iteration_tree,
1313
pull_dims)
@@ -47,7 +47,7 @@ def avoid_denormals(iet, platform=None, **kwargs):
4747
cgen.Statement('_MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_ON)'),
4848
cgen.Line())
4949

50-
body = iet.body._rebuild(body=(List(header=header),) + iet.body.body)
50+
body = iet.body._rebuild(body=(EmptyList(header=header),) + iet.body.body)
5151
iet = iet._rebuild(body=body)
5252

5353
return iet, {'includes': ('xmmintrin.h', 'pmmintrin.h')}

examples/performance/01_gpu.ipynb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,7 @@
288288
"\n",
289289
" const int x_fsz0 = u_vec->size[1];\n",
290290
" const int y_fsz0 = u_vec->size[2];\n",
291+
"\n",
291292
" const int x_stride0 = x_fsz0*y_fsz0;\n",
292293
" const int y_stride0 = y_fsz0;\n",
293294
"\n",

0 commit comments

Comments
 (0)