模块
模块是一个编译单元。它定义了一组相关的函数、全局变量和元数据。在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_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_unique_name(name)
返回在整个模块中唯一的名称。name 是期望的名称,但如果已被使用,则可能返回一个变体。
- data_layout
一个表示LLVM格式数据布局的字符串。
- global_values
此模块中全局值的可迭代对象。
- triple
一个表示LLVM“三元组”形式目标架构的字符串。