[LLVMdev] Passing a function pointer as parameter to function call?

Kevin Hu hxy9243 at gmail.com
Thu Mar 12 15:24:32 PDT 2015


Hi David,


Thanks very much.

I tried and the IR it produces is:

%call = call i32 @atexit(void ()* foo)

The problem is this still doesn't give me any clues how to produce the code
inside my LLVM pass. How do I get the pointer to this foo function?

Any hints?


Thank you.
Kevin Hu

On Thu, Mar 12, 2015 at 6:09 PM, David Blaikie <dblaikie at gmail.com> wrote:

> Easiest thing to do would be to write the equivalent C code, throw it
> through Clang, and look at the IR it produces.
>
> On Thu, Mar 12, 2015 at 3:00 PM, Kevin Hu <hxy9243 at gmail.com> wrote:
>
>> Dear all,
>>
>>
>> I'm writing an LLVM pass, and I want to insert a call instruction that
>> takes a function pointer as a parameter. The effect would be the same as
>> following:
>>
>> atexit(foo);
>>
>> Where foo is a function I insert with M.getOrInsertFunction(), which in
>> LLVM is a Function class.
>>
>> I searched for a while and did not come up with a satisfying answer.
>> Should I create a Value class of pointer type, or a Int64Ty for a pointer?
>> How do I get the pointer to the function I create? I also tried passing foo
>> as Function* in LLVM as parameter to create CallInst directly, and I
>> doesn't seem to work.
>>
>> Any hints and enlightenment is appreciated. Many thanks.
>>
>>
>> Regards,
>> Yours,
>> Kevin Hu
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
>>
>


-- 
Yours,
X. Hu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150312/4377cf4e/attachment.html>


More information about the llvm-dev mailing list