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

How to add multiple operands to a MDNode or metadata in LLVM?

我想创建一个具有多个操作数的 MDNode 指针。以下代码使用 1 个操作数创建一个 MDNode 指针:

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

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

您需要创建一个 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);