如何将多个操作数添加到 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);
我想创建一个具有多个操作数的 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);