8

如果函数调用是直接的,可以通过以下代码获取Function类型。

Function  * fun  = callInst->getCalledFunction();
Function  * funType = fun->getFunctionType();

但是,如果调用是间接的,即通过函数指针,则getCalledFunction 返回 NULL。所以我的问题是如何在通过函数指针调用函数时获取函数类型。

4

1 回答 1

10

要从间接调用中获取类型,请使用getCalledValue而不是getCalledFunction,如下所示:

Type* t = callInst->getCalledValue()->getType();

这将为您提供传递给调用指令的指针类型;要获取实际的函数类型,请继续:

FunctionType* ft = cast<FunctionType>(cast<PointerType>(t)->getElementType());
于 2013-02-11T12:15:52.833 回答