[LLVMdev] compiling a call to function in compiler

Eric Christopher echristo at apple.com
Mon Jan 17 18:07:00 PST 2011


On Jan 17, 2011, at 6:03 PM, Rob Nikander wrote:

> On Mon, Jan 17, 2011 at 8:36 PM, Eric Christopher <echristo at apple.com> wrote:
>> 
>>    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.
> 
> Okay, found it.  My function was of type: "i8* (i8*, i8*)".  I thought
> that was okay, but now I see it needed to be "i8* (i8*, i8*)*" -- ie,
> a pointer to the former type.

Ah. excellent.

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


More information about the llvm-dev mailing list