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),

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);


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),

INSTEAD, I changed to :

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

For what it's worth, the online LLVM demo at 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: