8

関数呼び出しが直接の場合、次のコードを使用して Function 型を取得できます。

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

ただし、呼び出しが間接的、つまり関数ポインターを介する場合、getCalledFunction は NULL を返します。したがって、私の質問は、関数ポインターを介して関数が呼び出されたときに Function 型を取得する方法です。

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 に答える