[LLVMdev] printf decleration

Ryan M. Lefever lefever at crhc.uiuc.edu
Sun Apr 30 22:32:58 PDT 2006

I am writing a pass where I need to make a function deceleration for 
printf.  Below is the code I'm trying to use.

bool MyPass::runOnModule(Module &m) {
   vector<const Type*> args;
   Function* f = m.getOrInsertFunction("printf",
        FunctionType::get(Type::IntTy, args, true));

When I insert a call instruction to printf, I am using the following code:

   /* i an Instruction*, and f is the Function* from above */
   std::vector<Value*> args;

   new CallInst(f, args, "", i);

However, when my pass is run with opt it complains:

Call parameter type does not match function signature!
[5 x sbyte] c"test\00"
  sbyte* call int (sbyte*, ...)* %printf( [5 x sbyte] c"test\00" )  ;
<int>:0 [#uses=0]

Does anyone know what the problem is?


Ryan M. Lefever  [217.333.7231]  [http://www.ews.uiuc.edu/~lefever]

More information about the llvm-dev mailing list