[LLVMdev] compiling a call to function in compiler

Eric Christopher echristo at apple.com
Mon Jan 17 17:36:39 PST 2011


On Jan 17, 2011, at 5:01 PM, Rob Nikander wrote:

> Hi,
> 
> I'm trying to follow the advice from this message:
> http://lists.cs.uiuc.edu/pipermail/llvmdev/2008-October/017574.html,
> to create a call instruction from a function pointer.  But I'm
> getting...
> 
>   Assertion failed: (isa<X>(Val) && "cast<Ty>() argument of
> incompatible type!"),
>   function cast, file /usr/local/include/llvm/Support/Casting.h, line 202.
> 
> Code snippets...
> 
>    id testfunc(id a, id b) { ... }
>    ...
>    FunctionType *fn_type = FunctionType::get(id_type, argtypes, false);	
>    Value *fn = ConstantExpr::getIntToPtr(ConstantInt::get(int64_type,
> reinterpret_cast<int64_t>(testfunc)), fn_type);
>    return builder.CreateCall2(fn, arg0val, arg1val);   // <--
> assertion fails here
> 
> What am I doing wrong?  I can paste more code if needed.

One of the types doesn't match the types of what you are trying to pass.

You should debug which one it is and why the types aren't matching what
you think they should be.

-eric
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110117/aefb7e2e/attachment.html>


More information about the llvm-dev mailing list