我正在尝试将被调用的函数提取到另一个模块。如果函数有定义数量的参数,我就会成功。
ORDER BY
但是如果函数具有可变数量的参数, // Create the arguments vector from the my argument list
SmallVector<Type *, sizeof(MyArgs)> ArgTys;
for (Value *V : MyArgs)
ArgTys.push_back(V->getType());
// Just get a void return type
Type *RetTy = Type::getVoidTy(TempContext);
// Create a new function with MyArgs as arguments
Constant *C = TempM->getOrInsertFunction(
"TempF", FunctionType::get(RetTy, ArgTys, false));
只会在getOrInsertFunction
中添加我能够使用MyArgs
捕获的参数。
如何验证源函数是否具有可变数量的参数?
如何使用getOrInserFunction声明具有可变数量参数的函数?
答案 0 :(得分:2)
您可以通过
声明变量参数函数 FunctionType::get(RetTy, ArgTys, true);
(因此,在您的情况下,更改&#34; TempF&#34;函数的false
参数。)
您可以使用方法
查询函数是否正在使用变量参数列表 bool isVarArg() const