Skip to content

Commit 67a2179

Browse files
committed
compiler: Improve lowering of LocalObjects
1 parent 616135e commit 67a2179

1 file changed

Lines changed: 13 additions & 5 deletions

File tree

devito/passes/iet/definitions.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -97,17 +97,25 @@ def _alloc_object_on_low_lat_mem(self, site, obj, storage):
9797
"""
9898
decl = Definition(obj)
9999

100-
if obj._C_init:
101-
definition = (decl, obj._C_init)
100+
init = obj._C_init
101+
if not init:
102+
definition = decl
103+
efuncs = ()
104+
elif init.is_Callable:
105+
definition = Call(init.name, init.parameters,
106+
retobj=obj if init.retval else None)
107+
efuncs = (init,)
102108
else:
103-
definition = (decl)
109+
definition = (decl, init)
110+
efuncs = ()
104111

105112
frees = obj._C_free
106113

107114
if obj.free_symbols - {obj}:
108-
storage.update(obj, site, objs=definition, frees=frees)
115+
storage.update(obj, site, objs=definition, efuncs=efuncs, frees=frees)
109116
else:
110-
storage.update(obj, site, standalones=definition, frees=frees)
117+
storage.update(obj, site, standalones=definition, efuncs=efuncs,
118+
frees=frees)
111119

112120
def _alloc_array_on_low_lat_mem(self, site, obj, storage):
113121
"""

0 commit comments

Comments
 (0)