我想将调试元数据添加到我生成的llvm IR中,该IR是通过C API创建的。但是,我无法弄清楚如何创建命名元数据节点(例如!llvm.dbg.cu),甚至不知道如何创建具有唯一数字的元数据节点(即!0,!1等)。向指令添加元数据操作数看起来非常简单,但我无法弄清楚如何创建独立的元数据节点。
答案 0 :(得分:4)
在LLVM 3.0中,C API中没有公开用于创建或修改命名元数据的功能。 3.0版本发布后,新功能(LLVMAddNamedMetadataOperand)为recently added to the API。
如果您愿意从源代码构建LLVM,则可以从主干获得此支持。请参阅Getting Started页面,了解如何构建LLVM。否则,您必须等到LLVM 3.1发布。
当该功能可用时,这将是一个简单的问题:
LLVMAddNamedMetadataOperand(module, "named_md_name", mdnode);
如果没有名为“named_md_name”的命名元数据,则会创建一个。否则,现有对象将被更新。