如何使用C ++ API将元数据附加到LLVM IR?

时间:2012-03-01 23:41:15

标签: llvm

有人能指出我使用c ++ api将元数据附加到llvm-ir的具体示例吗?

我已阅读此页http://llvm.org/docs/SourceLevelDebugging.html

由于

2 个答案:

答案 0 :(得分:3)

上述答案不太正确(或完整)。您还可以使用MDNode :: get(...)在模块级别创建元数据,它采用上下文和值数组来创建元数据。命名元数据非常重要,您只应将其用作顶级元数据值的锚点。

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

答案 1 :(得分:2)

你可以做两件事。

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