首先,我是LLVM passes的新手。
我正在尝试在一个转换pass(使用C++ API)之后向LLVM指令添加元数据。我打算将这些信息存储,以供工具链中的另一个工具使用。我有两个关于此的问题。
我希望存储为元数据的信息可以输入到另一个基于LLVM IR的工具中。所以,使用元数据是一个好主意吗?我打算将字符串作为元数据与一些指令一起存储。
如果元数据是正确的选择,在创建元数据节点时需要一些帮助。我计划使用setMedata()函数将其附加到指令上。哪个setMetadata()变体是正确的。我不确定我的数据应该是哪种MDKind。我想创建一个MDString,将其附加到我的MDNode上,然后使用指令调用setMetadata()。如果我想将元数据附加到函数内部的指令上,应该使用什么Context?文境与元数据有什么相关性?
我尝试在论坛和llvm doxygen文档中阅读了很多讨论,但没有得到关于所有问题的清晰而完整的答案。感谢您的帮助或一些可以帮助我理解这个问题的资料。