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


Create a module. For informational purposes, you can specify the optional name, a Python string.

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.

    EXAMPLE: 'DICompileUnit'

    A DIValue instance is returned. You can then associate it to, for example, an instruction.


    di_file = module.add_debug_info("DIFile", {
         "filename": "",
         "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_global(globalvalue)

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

  • add_metadata(operands)

    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. Returns an MDValue.

  • add_named_metadata(name, element=None)

    Return the metadata node with the given name. If it does not 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. Returns a NamedMetaData.


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

    Get the Global value—a GlobalValue—with the given name. KeyError is raised if the name does not exist.

  • get_named_metadata(name)

    Return the metadata node with the given name. KeyError is raised if the name does not exist.

  • get_unique_name(name)

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

  • data_layout

    A string representing the data layout in LLVM format.

  • functions

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

  • global_values

    An iterable of global values in this module.

  • triple

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