Skip to content

Commit cb6bad3

Browse files
committed
compiler: Improve lowering of LocalObjects
1 parent fea9884 commit cb6bad3

1 file changed

Lines changed: 14 additions & 3 deletions

File tree

devito/passes/iet/definitions.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,14 +98,25 @@ def _alloc_object_on_low_lat_mem(self, site, obj, storage):
9898
"""
9999
decl = Definition(obj)
100100

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

103113
frees = obj._C_free
104114

105115
if obj.free_symbols - {obj}:
106-
storage.update(obj, site, objs=definition, frees=frees)
116+
storage.update(obj, site, objs=definition, efuncs=efuncs, frees=frees)
107117
else:
108-
storage.update(obj, site, standalones=definition, frees=frees)
118+
storage.update(obj, site, standalones=definition, efuncs=efuncs,
119+
frees=frees)
109120

110121
def _alloc_array_on_low_lat_mem(self, site, obj, storage):
111122
"""

0 commit comments

Comments
 (0)