找出llvm中的函数类型

时间:2015-12-14 06:28:19

标签: clang llvm

我正在迭代Module的功能列表,如下所示。 我正在寻找一种方法来查明Function *f是否是声明或定义。 (通过转储函数,似乎列表包含两种类型。)

for (Module::iterator f = M->begin(), fend = M->end(); f != fend; ++f) {
  ...
}

1 个答案:

答案 0 :(得分:2)

来自Function手册:

  

如果BasicBlock列表为空,则表示Function实际上是一个函数声明:函数的实际主体尚未链接。

Important Public Members of the Function的下一部分中,您将找到所需的功能:

  

bool isDeclaration()

     

返回函数是否​​定义了主体。如果函数是“外部”,则它没有正文,因此必须通过链接到不同翻译单元中定义的函数来解析。

为你做空虚检查。