[LLVMdev] compiling a call to function in compiler

Rob Nikander rob.nikander at gmail.com
Mon Jan 17 17:01:09 PST 2011


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.

thanks,
Rob



More information about the llvm-dev mailing list