how to get a void type value in llvm

Hi, I want to insert a function with a void type parameter,
for example: int foo(void);
OI declared
fcall2 = M.getOrInsertFunction("foo",
          IntegerType::get(M.getContext(), 32),
          Type::getVoidTy(M.getContext()));

then the question is how to get the void type value to make the
CallInst inserted sucessfully? (what should be ********)
CallInst::Create(fcall2, ******, "", insertPos);

Hi Shuying,

You will find in the documentation that amongst the overloaded CallInst::Create()'s there is one that takes no function arguments:

static CallInst* llvm::CallInst::Create ( Value * F, const Twine & NameStr, BasicBlock * InsertAtEnd);

Regards

Hi, sivart

Thanks for pointing it out. I used it, and it works. Thank you again.

BTW, for any later reference, the function prototype declaration with
no arguments is not what I wrote:
fcall2 = M.getOrInsertFunction("foo",
    IntegerType::get(M.getContext(), 32),
    Type::getVoidTy(M.getContext()));

INSTEAD, I changed to :

fcall2 = M.getOrInsertFunction("foo", FunctionType::get(
IntegerType::get(M.getContext(), 32), false));
combining with this, the insertion works finally.
Thanks,
--Shuying

For what it's worth, the online LLVM demo at http://llvm.org/demo/ can
be used to create code that uses the C++ API to generate the code you
give it.

Very useful for examples like this, or at least I find it useful for such :).

FYI :slight_smile:

~Will