[llvm-dev] How to efficiently extract the calledFunction from a complex CallInst?

Shen Liu via llvm-dev llvm-dev at lists.llvm.org
Thu Nov 12 19:27:37 PST 2015


Hi all,

Usually if we want to get the called Function we can directly use
CallInst->getCalledFunction(), however, today i encounter an unusual
CallInst as follows:

 %call11 = call double (...)* bitcast (double ()* @quantum_frand to double
(...)*)()

the original C source involve type cast:

float u,v;
extern double quantum_frand();
   u = 2 * quantum_frand() - 1;
   v = 2 * quantum_frand() - 1;

In this case, CallInst->getCalledFunction() returns a nullptr unusually, I
printed out the getOperand(0) and found the operand is the whole thing of
 "double (...)* bitcast (double ()* @quantum_frand to double (...)*)()".
Any member function calling on that fails so i don't know whether there is
an efficient way to exactly get the called function @quantum_frand(...)
here? Thanks!


Best regards,

Shen
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20151112/61000ee3/attachment.html>


More information about the llvm-dev mailing list