Я пытаюсь создать инструкцию вызова, используя IRBuilder llvm, как показано ниже
llvm::Value* FunctionCall::genLLVM(GenLLVM* g){
std::vector<llvm::Value*> paramArrayRef;
std::list<Value*> paramList = getParamList();
std::list<Value*>::iterator paramIter = paramList.begin();
unsigned int i = 0;
for(; paramIter != paramList.end(); ++paramIter, ++i)
paramArrayRef.push_back((*paramIter)->genLLVM(g));
llvm::FunctionType *FT = &getFunctionType(getFunction());
llvm::Function *F = static_cast<llvm::Function*>(g->getModule().getOrInsertFunction(getFunction().getName(), FT));
return g->getBuilder().CreateCall(F, paramArrayRef,"");
}
./genllvm.cpp:67: error: no matching function for call to ‘llvm::IRBuilder<true, llvm::ConstantFolder, llvm::IRBuilderDefaultInserter<true> >::CreateCall(llvm::Function*&, std::vector<llvm::Value*, std::allocator<llvm::Value*> >&, const char [1])’
/usr/include/llvm/Support/IRBuilder.h:891: note: candidates are: llvm::CallInst* llvm::IRBuilder<preserveNames, T, Inserter>::CreateCall(llvm::Value*, const llvm::Twine&) [with bool preserveNames = true, T = llvm::ConstantFolder, Inserter = llvm::IRBuilderDefaultInserter<true>]
/usr/include/llvm/Support/IRBuilder.h:894: note: llvm::CallInst* llvm::IRBuilder<preserveNames, T, Inserter>::CreateCall(llvm::Value*, llvm::Value*, const llvm::Twine&) [with bool preserveNames = true, T = llvm::ConstantFolder, Inserter = llvm::IRBuilderDefaultInserter<true>]
Я просмотрел файл IRBuilder.h, но не смог найти функцию, которая может принимать переменные аргументы.Есть ли функция, которая создает вызов функции с переменным числом аргументов.Кстати, я использую llvm 2.8