diff --git a/gen_wrap.py b/gen_wrap.py index a439c86b9152decbedfc8d0dc16a603c21821103..5d329c23b4cfa245eec656a15ae238aafc671cd3 100644 --- a/gen_wrap.py +++ b/gen_wrap.py @@ -1281,17 +1281,17 @@ def write_method_wrapper(gen, cls_name, meth): raise SignatureNotSupported("non-give secondary ptr return value") pre_call( - '_retptr_{name} = ffi.new("{cls} *")' + '_retptr_{name} = ffi.new("{cls} **")' .format(name=arg.name, cls=arg.base_type)) - passed_args.append("ffi.addressof(_retptr_{name})".format(name=arg.name)) + passed_args.append("_retptr_{name}".format(name=arg.name)) py_cls = isl_class_to_py_class(arg.base_type) safety(""" if _retptr_{name} == ffi.NULL: _ret_{name} = None else: - _ret_{name} = {py_cls}(_data=_retptr_{name}) + _ret_{name} = {py_cls}(_data=_retptr_{name}[0]) """ .format(name=arg.name, cls=arg.base_type, py_cls=py_cls)) diff --git a/test/test_isl.py b/test/test_isl.py index ee4f7d9d89f0e5d9313e3c563bbbab04edb38c80..506d89c55d54a1103277e20b5a766e2af87f58ab 100644 --- a/test/test_isl.py +++ b/test/test_isl.py @@ -197,6 +197,13 @@ def test_schedule(): print(printer.get_str()) +def test_union_map(): + d = isl.UnionSet("[start, num] -> {S[i,j] : start <= i,j < start + num}") + s = isl.UnionMap("{S[i,j] -> [i,j]}").intersect_domain(d) + aw = isl.UnionMap("{S[i,j] -> B[1024 i + j]}") + aw.compute_flow(aw, aw, s) + + if __name__ == "__main__": import sys if len(sys.argv) > 1: