Skip to content

Latest commit

 

History

History
105 lines (71 loc) · 3.28 KB

modules.rst

File metadata and controls

105 lines (71 loc) · 3.28 KB

Modules

.. currentmodule:: llvmlite.ir

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 :class:`Module` class.

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

Modules have the following methods and attributes:

  • .. method:: 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 :class:`DIValue` instance is returned. You can then
       associate it to, for example, 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)
    
    
  • .. method:: add_global(globalvalue)
    
       Add the given *globalvalue*---a :class:`GlobalValue`---to
       this module. It should have a unique name in the whole
       module.
    
    
  • .. method:: add_metadata(operands)
    
       Add an unnamed :ref:`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 :class:`MDValue`.
    
    
  • .. method:: 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 :class:`NamedMetaData`.
    
       EXAMPLE::
    
          module.add_named_metadata("llvm.ident", ["llvmlite/1.0"])
    
    
  • .. method:: get_global(name)
    
       Get the
       :ref:`global value`---a :class:`GlobalValue`---with the
       given name. :exc:`KeyError` is raised if the name does
       not exist.
    
    
  • .. method:: get_named_metadata(name)
    
       Return the metadata node with the given *name*.
       :exc:`KeyError` is raised if the name does not exist.
    
    
  • .. method:: 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.
    
    
  • .. attribute:: data_layout
    
       A string representing the data layout in LLVM format.
    
    
  • .. attribute:: functions
    
       The list of functions, as :class:`Function` instances,
       declared or defined in the module.
    
    
  • .. attribute:: global_values
    
       An iterable of global values in this module.
    
    
  • .. attribute:: triple
    
       A string representing the target architecture in LLVM
       "triple" form.