bhavani krishnan
2008-Nov-15 23:58 UTC
[LLVMdev] How do I get the result of an instruction?
Thanks! How do I cast the result to a string? I basically need to store the results of some instructions in a file. Thanks, Bhavani --- On Sun, 11/16/08, John Criswell <criswell at uiuc.edu> wrote:> From: John Criswell <criswell at uiuc.edu> > Subject: Re: [LLVMdev] How do I get the result of an instruction? > To: "bhavi63 at yahoo.com" <bhavi63 at yahoo.com>, "LLVM Developers Mailing List" <llvmdev at cs.uiuc.edu> > Date: Sunday, November 16, 2008, 10:55 AM > bhavani krishnan wrote: > > Hi all, > > > > I probably have a stupid question but I could not find > out so please help me out here. I can use getOperand to get > the operands of an instruction. Similarly, How do I get the > result of an instruction? > The instruction itself is its result. > > For example, if I wanted to generate code that does a > getlemeneptr instruction (GEP) and then uses the result of > the GEP as the pointer to a load instruction, I would do the > following: > > Instruction * GEP = new GetElementPtrInst (Value, ....); > Instruction * LI = new LoadInst (GEP, "name", > ...); > > -- John T. > > > Thanks, > > Bhavani > > > > > > _______________________________________________ > > LLVM Developers mailing list > > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > >
On Sat, Nov 15, 2008 at 3:58 PM, bhavani krishnan <bhavi63 at yahoo.com> wrote:> Thanks! > > How do I cast the result to a string? I basically need to store the results of some instructions in a file.If you're confused about how the IR works, http://llvm.org/demo/ can be useful. The question you're asking doesn't really seem to make sense. -Eli
bhavani krishnan
2008-Nov-16 15:54 UTC
[LLVMdev] How do I get the result of an instruction?
Hi,
I am writing an optimization pass where I need to instrument the code such that
I need to store the results of some instructions in file. Using llc -march=cpp
option I figured out how to add a function(say writeToFile) which takes char*
parameter and writes to file. Now, I need put in a CallInst which calls
writeToFile passing the Instruction result as parameter. How do I do this?
So, in my optimization pass...
Func *myprint = makewriteToFile() //creates a function which writes to file
for (Function::iterator i = func->begin(), e = func->end(); i != e; ++i)
{
blk=i;
for (BasicBlock::iterator j = blk->begin(), k = blk->end(); j !=
k; ++j){
Instruction *inst = j;
//if inst satisfies my condition, write reults to file
CallInst *CallPrint = CallInst::Create(myprint, ???, "",
j);
CallPrint->setTailCall(true);
}
}
What do I put in the ???. How do I cast Instruction *inst into char * which can
be passed into the function?
Hope this is clear.
Thanks,
Bhavani
--- On Sun, 11/16/08, Eli Friedman <eli.friedman at gmail.com> wrote:
> From: Eli Friedman <eli.friedman at gmail.com>
> Subject: Re: [LLVMdev] How do I get the result of an instruction?
> To: bhavi63 at yahoo.com, "LLVM Developers Mailing List"
<llvmdev at cs.uiuc.edu>
> Cc: "John Criswell" <criswell at uiuc.edu>
> Date: Sunday, November 16, 2008, 6:35 AM
> On Sat, Nov 15, 2008 at 3:58 PM, bhavani krishnan
> <bhavi63 at yahoo.com> wrote:
> > Thanks!
> >
> > How do I cast the result to a string? I basically need
> to store the results of some instructions in a file.
>
> If you're confused about how the IR works,
> http://llvm.org/demo/ can
> be useful. The question you're asking doesn't
> really seem to make
> sense.
>
> -Eli
Maybe Matching Threads
- [LLVMdev] Assertion `castIsValid(getOpcode(), S, Ty) && "Illegal BitCast"' failed.
- [LLVMdev] Assertion `InReg && "Value not in map!"' failed
- [LLVMdev] Assertion `InReg && "Value not in map!"' failed
- [LLVMdev] How do I get the result of an instruction?
- [LLVMdev] How do I get the result of an instruction?