gpt4 book ai didi

c++ - 在 LLVM 中间接调用时如何从 CallInst 获取 FunctionType

转载 作者:可可西里 更新时间:2023-11-01 18:28:29 25 4
gpt4 key购买 nike

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

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

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

最佳答案

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

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

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

FunctionType* ft = cast<FunctionType>(cast<PointerType>(t)->getElementType());

关于c++ - 在 LLVM 中间接调用时如何从 CallInst 获取 FunctionType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14811587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com