[LLVMdev] How do I insert a printf call in the IR?

Nick Lewycky nicholas at mxc.ca
Sat Nov 15 18:27:02 PST 2008


Shah, Mrunal J wrote:
> Thanks a lot Nick
> 
> -march=cpp was very helpful.
> But I still have a small problem, I am trying to insert a printf in a transformation pass. 
> So when the original program already has a printf, on executing the transformation pass, it tries to create function "printf1" instead of "printf"
> 
> Am I missing something here?

Use M->getOrInsertFunction.

http://llvm.org/doxygen/classllvm_1_1Module.html#04eca33967535248a35daaf216420bef

Nick

> Thanks again!
> Mrunal
> 
> ----- Original Message -----
> From: "Nick Lewycky" <nicholas at mxc.ca>
> To: "LLVM Developers Mailing List" <llvmdev at cs.uiuc.edu>
> Sent: Saturday, November 15, 2008 7:49:09 PM GMT -05:00 US/Canada Eastern
> Subject: Re: [LLVMdev] How do I insert a printf call in the IR?
> 
> Shah, Mrunal J wrote:
>> Once I have the function
>> to make a call to this function I use
>>
>> CallInst::Create(myPrint, args.begin(), args.end(),"", B);
>>
>> But I am not being able to pass a string into the argument vector.
>> should I define args as
>> std::vector<const Type*> args;
>> or
>> std::vector<const PointerType*> args;
>> or 
>> std::vector<Value*> args;
>>
>> and how do I convert a constant string to either of these types, so that I can push it on the args list.
> 
> You need to put the string constant into a GlobalVariable (which is a 
> Value).
> 
> This is a bit tricky if you're using the direct API. I suggest using 
> "llc -march=cpp" on a program that does printf("Hello world!");
> 
> Using IRBuilder is easier. Starting with LLVM 2.4, there's a 
> CreateGlobalString function that takes a const char *String and returns 
> a Value*.
> 
> Nick
> 
>> Thanks!
>> Mrunal
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
> 
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> 




More information about the llvm-dev mailing list