LLVM中是否存在具有命名参数的FunctionType?

LLVM中是否存在具有命名参数的FunctionType?,llvm,llvm-c++-api,Llvm,Llvm C++ Api,在LLVM中,函数如下所示: define i32 @foo(i32, i32) 通过玩lli,我注意到这也是可以接受的: define i32 @foo(i32 %first-arg, i32 %second-arg) 然后可以从给定的名称访问参数 如何使用C++ API生成命名参数的函数?我查看了文档,似乎无法为FunctionType::get提供名称,因为它的第二个参数的类型是ArrayRef,其中没有名称字段(或Twine)。名称不是该类型的一部分。就类型而言,每个i32都是相同的

在LLVM中,函数如下所示:

define i32 @foo(i32, i32)
通过玩
lli
,我注意到这也是可以接受的:

define i32 @foo(i32 %first-arg, i32 %second-arg)
然后可以从给定的名称访问参数


如何使用C++ API生成命名参数的函数?我查看了文档,似乎无法为
FunctionType::get
提供名称,因为它的第二个参数的类型是
ArrayRef
,其中没有名称字段(或
Twine
)。

名称不是该类型的一部分。就类型而言,每个i32都是相同的。但是,可以在不影响类型的情况下设置函数参数的名称,就像设置函数名称一样。我从LLVM的Mezozogia版本中抄袭了一个for循环,并添加了一个setName()调用,这很有效:

for (Function::arg_iterator a = foo->arg_begin(), ae = foo->arg_end();
     a != ae;
     ++a) {
  …
  a->setName(bar->name);
  …
}
我想现在有一种更漂亮的方法来编写循环。

顺便说一句,我抄袭了它并将其添加到了我自己的循环中。