3.3. Modules

A module is a compilation unit. It defines a set of related functions, global variables and metadata. In the IR layer, a module is representated by the Module class.

class llvmlite.ir.Module(name='')

Create a module. The optional name, a Python string, can be specified for informational purposes.

Modules have the following methods and attributes:

add_debug_info(kind, operands, is_distinct=False)

Add debug information metadata to the module with the given operands (a mapping of string keys to values) or return a previous equivalent metadata. kind is the name of the debug information kind (e.g. 'DICompileUnit').

A DIValue instance is returned, it can then be associated to e.g. an instruction.


di_file = module.add_debug_info("DIFile", {
   "filename": "factorial.py",
   "directory": "bar",
di_compile_unit = module.add_debug_info("DICompileUnit", {
   "language": ir.DIToken("DW_LANG_Python"),
   "file": di_file,
   "producer": "llvmlite x.y",
   "runtimeVersion": 2,
   "isOptimized": False,
}, is_distinct=True)

Add the given globalvalue (a GlobalValue) to this module. It should have a unique name in the whole module.


Add an unnamed metadata node to the module with the given operands (a list of metadata-compatible values). If another metadata node with equal operands already exists in the module, it is reused instead. A MDValue is returned.

add_named_metadata(name, element=None)

Return the metadata node with the given name. If it doesn’t already exist, the named metadata node is created first. If element is not None, it can be a metadata value or a sequence of values to append to the metadata node’s elements. A NamedMetaData is returned.


module.add_named_metadata("llvm.ident", ["llvmlite/1.0"])

Get the global value (a GlobalValue) with the given name. KeyError is raised if it doesn’t exist.


Return the metadata node with the given name. KeyError is raised if it doesn’t exist.


Return a unique name accross the whole module. name is the desired name, but a variation can be returned if it is already in use.


A string representing the data layout in LLVM format.


The list of functions (as Function instances) declared or defined in the module.


An iterable of global values in this module.


A string representing the target architecture in LLVM “triple” form.