模块

模块是一个编译单元。它定义了一组相关的函数、全局变量和元数据。在IR层中,模块由 Module 类表示。

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

创建一个模块。为了提供信息,你可以指定可选的 name,一个Python字符串。

模块具有以下方法和属性

  • add_debug_info(kind, operands, is_distinct=False)

    向模块添加调试信息元数据,使用给定的 operands(字符串键到值的映射),或返回先前的等效元数据。kind 是调试信息类型的名称。

    示例: 'DICompileUnit'

    一个 DIValue 实例被返回。然后你可以将其关联到,例如,一条指令。

    示例

    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)

    将给定的 globalvalue(一个 GlobalValue)添加到此模块。它在整个模块中应该具有唯一的名称。

  • add_metadata(operands)

    向模块添加一个无名的 Metadata 节点,使用给定的 operands(一个元数据兼容值的列表)。如果模块中已存在具有相同操作数的另一个元数据节点,则会重用它。返回一个 MDValue

  • add_named_metadata(name, element=None)

    返回具有给定 name 的元数据节点。如果它尚不存在,则首先创建该命名元数据节点。如果 element 不是 None,它可以是一个元数据值或一个值序列,用于附加到元数据节点的元素中。返回一个 NamedMetaData

    示例

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

    获取具有给定名称的 Global value(一个 GlobalValue)。如果名称不存在,则会引发 KeyError

  • get_named_metadata(name)

    返回具有给定 name 的元数据节点。如果名称不存在,则会引发 KeyError

  • get_unique_name(name)

    返回在整个模块中唯一的名称。name 是期望的名称,但如果已被使用,则可能返回一个变体。

  • data_layout

    一个表示LLVM格式数据布局的字符串。

  • functions

    模块中声明或定义的函数列表,作为 Function 实例。

  • global_values

    此模块中全局值的可迭代对象。

  • triple

    一个表示LLVM“三元组”形式目标架构的字符串。