Continuum Analytics: Documentation

# 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.

    Example:

        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_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. 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.

    Example:

        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 it doesn’t exist.

  `get_named_metadata`(name)

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

  `get_unique_name`(name)

    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.

  `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.