Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
如果函数调用是直接的,可以通过以下代码获取Function类型。
Function * fun = callInst->getCalledFunction(); Function * funType = fun->getFunctionType();
但是,如果调用是间接的,即通过函数指针,则getCalledFunction 返回 NULL。所以我的问题是如何在通过函数指针调用函数时获取函数类型。
getCalledFunction
要从间接调用中获取类型,请使用getCalledValue而不是getCalledFunction,如下所示:
getCalledValue
Type* t = callInst->getCalledValue()->getType();
这将为您提供传递给调用指令的指针类型;要获取实际的函数类型,请继续:
FunctionType* ft = cast<FunctionType>(cast<PointerType>(t)->getElementType());