如何使用C++;应用程序编程接口? 有人能指出我用C++ API?< /p>将元数据附加到LLVM IR的具体例子吗?

如何使用C++;应用程序编程接口? 有人能指出我用C++ API?< /p>将元数据附加到LLVM IR的具体例子吗?,llvm,Llvm,我读过这一页 谢谢你可以做两件事 将元数据节点附加到指令(如引用链接中的!dbg节点)。为此,有指令::setMetadata方法 在模块中创建命名元数据节点,而不是附加到任何特定指令。为此,请使用Module::getOrInsertNamedMetadata 上述答案不完全正确。您还可以仅使用MDNode::get(…)在模块级别创建元数据,它接受一个上下文和一个值数组来创建元数据。命名元数据非常重要,您应该只将其用作顶级元数据值的锚定 对于附加到指令,您确实希望使用指令上的setMetad

我读过这一页


谢谢

你可以做两件事

  • 将元数据节点附加到指令(如引用链接中的
    !dbg
    节点)。为此,有
    指令::setMetadata
    方法
  • 在模块中创建命名元数据节点,而不是附加到任何特定指令。为此,请使用
    Module::getOrInsertNamedMetadata

  • 上述答案不完全正确。您还可以仅使用MDNode::get(…)在模块级别创建元数据,它接受一个上下文和一个值数组来创建元数据。命名元数据非常重要,您应该只将其用作顶级元数据值的锚定

    对于附加到指令,您确实希望使用指令上的setMetadata调用来设置任何特定元数据,但是,您需要确保使用的是正确的上下文,否则可能会覆盖其他元数据