Expose preserve flag for Module.link_in

This commit is contained in:
Siu Kwan Lam 2012-12-04 13:50:16 -06:00
commit 03e54f2c12

View file

@ -450,7 +450,7 @@ class Module(llvm.Ownable, llvm.Cacheable):
llvm::Module::AnyPointerSize.""" llvm::Module::AnyPointerSize."""
return _core.LLVMModuleGetPointerSize(self.ptr) return _core.LLVMModuleGetPointerSize(self.ptr)
def link_in(self, other): def link_in(self, other, preserve=False):
"""Link the `other' module into this one. """Link the `other' module into this one.
The `other' module is linked into this one such that types, The `other' module is linked into this one such that types,
@ -463,12 +463,12 @@ class Module(llvm.Ownable, llvm.Cacheable):
Linker class. Linker class.
""" """
check_is_module(other) check_is_module(other)
other.forget() # remove it from object cache if not preserve:
ret = _core.LLVMLinkModules(self.ptr, other.ptr) other.forget() # remove it from object cache
if isinstance(ret, str): _core.LLVMLinkModules(self.ptr, other.ptr, int(bool(preserve)))
raise llvm.LLVMException(ret) if not preserve:
# Do not try to destroy the other module's llvm::Module*. # Do not try to destroy the other module's llvm::Module*.
other._own(llvm.DummyOwner()) other._own(llvm.DummyOwner())
def get_type_named(self, name): def get_type_named(self, name):
"""Return a Type object with the given name.""" """Return a Type object with the given name."""