如何在LLVM中添加多个操作数或LLVM中的元数据?

时间:2016-10-17 12:41:28

标签: c++ llvm llvm-ir

我想创建一个包含多个操作数的MDNode指针。以下代码创建一个带有1个操作数的MDNode指针:

llvm::MDNode *MDNOdeNVVM = llvm::MDNode::get(*context, llvm::MDString::get(*context, "kernel"));

但我在LLVM手册中没有看到addOperand函数。那么是否有任何函数可以让我创建具有多个操作数的元数据?

1 个答案:

答案 0 :(得分:1)

您需要创建MDTuple。首先,在向量中创建操作数,然后创建元组。类似的东西:

SmallVector<Metadata *, 32> Ops;
Ops.push_back(llvm::MDString::get(*context, "linux"));
Ops.push_back(llvm::MDString::get(*context, "kernel"));
auto *Node =  MDTuple::get(Context, Ops);