在LLVM中,如何插入/声明具有可变数量参数的函数?

时间:2017-11-17 17:56:41

标签: c++ compiler-construction llvm

我正在尝试将被调用的函数提取到另一个模块。如果函数有定义数量的参数,我就会成功。

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声明具有可变数量参数的函数?

1 个答案:

答案 0 :(得分:2)

根据documentation

  1. 您可以通过

    声明变量参数函数

    FunctionType::get(RetTy, ArgTys, true);

  2. (因此,在您的情况下,更改&#34; TempF&#34;函数的false参数。)

    1. 您可以使用方法

      查询函数是否正在使用变量参数列表

      bool isVarArg() const