如何通过llvm-CAPI创建命名元数据?

如何通过llvm-CAPI创建命名元数据?,c,metadata,llvm,C,Metadata,Llvm,我想将调试元数据添加到生成的llvm IR中,它是通过C API创建的。但是,我不知道如何创建命名元数据节点(例如!llvm.dbg.cu),甚至不知道如何创建具有唯一编号的元数据节点(例如!0、!1等)。向指令中添加元数据操作数看起来非常简单,但我不知道如何创建独立的元数据节点。在LLVM 3.0中,C API中没有用于创建或修改命名元数据的函数。在3.0版本之后,创建了一个新函数(LLVMAddNamedMetadataOperator) 如果您愿意从源代码构建LLVM,那么可以从主干中获得

我想将调试元数据添加到生成的llvm IR中,它是通过C API创建的。但是,我不知道如何创建命名元数据节点(例如!llvm.dbg.cu),甚至不知道如何创建具有唯一编号的元数据节点(例如!0、!1等)。向指令中添加元数据操作数看起来非常简单,但我不知道如何创建独立的元数据节点。

在LLVM 3.0中,C API中没有用于创建或修改命名元数据的函数。在3.0版本之后,创建了一个新函数(LLVMAddNamedMetadataOperator)

如果您愿意从源代码构建LLVM,那么可以从主干中获得这种支持。请参阅有关如何构建LLVM的页面。否则,您将不得不等到LLVM3.1发布

当函数可用时,只需调用:

LLVMAddNamedMetadataOperand(module, "named_md_name", mdnode);
如果没有名为“named_md_name”的命名元数据,则将创建一个。否则将更新现有对象