2016-10-17 7 views
0

Я хочу создать указатель MDNode с несколькими операндами. Следующий код создает указатель MDNode с 1 операндом:Как добавить несколько операндов в MDNode или метаданные в LLVM?

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

Но я не вижу функцию addOperand в LLVM руководстве. Итак, есть ли какая-либо функция, которая позволит мне создавать метаданные с несколькими операндами?

ответ

1

Вам необходимо создать MDTuple. Сначала вы создаете свои операнды в векторе, а затем создаете Tuple. Что-то вроде:

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);