Skip to content

Commit d9c4817

Browse files
committed
compiler: Improve lowering of LocalObjects
1 parent 5eba76e commit d9c4817

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
@@ -98,17 +98,25 @@ def _alloc_object_on_low_lat_mem(self, site, obj, storage):
9898
"""
9999
decl = Definition(obj)
100100

101-
if obj._C_init:
102-
definition = (decl, obj._C_init)
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,)
103109
else:
104-
definition = (decl)
110+
definition = (decl, init)
111+
efuncs = ()
105112

106113
frees = obj._C_free
107114

108115
if obj.free_symbols - {obj}:
109-
storage.update(obj, site, objs=definition, frees=frees)
116+
storage.update(obj, site, objs=definition, efuncs=efuncs, frees=frees)
110117
else:
111-
storage.update(obj, site, standalones=definition, frees=frees)
118+
storage.update(obj, site, standalones=definition, efuncs=efuncs,
119+
frees=frees)
112120

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

0 commit comments

Comments
 (0)