What member function to use if I wish to operate on results of an instruction. eg. Instruction %1 = getelementptr inbounds [10 x i32]* %a, i32 0, i32 %0 I->getOperand will give me the operands. How should I get hold of %1? Thanks, Manish -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110801/13dc10b5/attachment.html>
In LLVM, %1 is the instruction itself. This is because LLVM IR is in SSA, so the "=" really means equality. If you look at a use of %1, e.g. as an operand to another instruction, you'll see that it's the instruction itself that is there (i.e. you can dyn_cast<Instruction> it). On Mon, Aug 1, 2011 at 5:27 PM, Manish Gupta <manishg at cs.ucsd.edu> wrote:> What member function to use if I wish to operate on results of an > instruction. > eg. > Instruction %1 = getelementptr inbounds [10 x i32]* %a, i32 0, i32 %0 > I->getOperand will give me the operands. > How should I get hold of %1? > Thanks, > Manish > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > >
Thanks Michael. I wish to get Type of %1 i.e. result of instruction. Let me try out your suggestion. But It is still not clear to me how will dyn_cast will help here. I already have pointer to this particular instruction. On Mon, Aug 1, 2011 at 5:34 PM, Michael Ilseman <michael at lunarg.com> wrote:> In LLVM, %1 is the instruction itself. This is because LLVM IR is in > SSA, so the "=" really means equality. If you look at a use of %1, > e.g. as an operand to another instruction, you'll see that it's the > instruction itself that is there (i.e. you can dyn_cast<Instruction> > it). > > On Mon, Aug 1, 2011 at 5:27 PM, Manish Gupta <manishg at cs.ucsd.edu> wrote: > > What member function to use if I wish to operate on results of an > > instruction. > > eg. > > Instruction %1 = getelementptr inbounds [10 x i32]* %a, i32 0, i32 %0 > > I->getOperand will give me the operands. > > How should I get hold of %1? > > Thanks, > > Manish > > _______________________________________________ > > LLVM Developers mailing list > > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > > > > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110802/95a1c125/attachment.html>
Thanks!!! James and Michael. yes now got the idea how it is working. Manish On Tue, Aug 2, 2011 at 7:59 AM, James Molloy <james.molloy at arm.com> wrote:> Hi Manish,**** > > ** ** > > As Michael mentioned, the Instruction is its own result.**** > > ** ** > > The Instruction class subclasses Value. If you treat the Instruction as a > Value you will get what you want – just call I->getType() to get the type of > the instruction.**** > > ** ** > > James**** > > ** ** > > *From:* llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu] *On > Behalf Of *Manish Gupta > *Sent:* 02 August 2011 15:43 > *To:* Michael Ilseman; llvmdev > *Subject:* Re: [LLVMdev] Grabbing Result of an Instruction.**** > > ** ** > > Thanks Michael.**** > > I wish to get Type of %1 i.e. result of instruction. Let me try out your > suggestion. But It is still not clear to me how will dyn_cast will help > here. I already have pointer to this particular instruction. **** > > ** ** > > On Mon, Aug 1, 2011 at 5:34 PM, Michael Ilseman <michael at lunarg.com> > wrote:**** > > In LLVM, %1 is the instruction itself. This is because LLVM IR is in > SSA, so the "=" really means equality. If you look at a use of %1, > e.g. as an operand to another instruction, you'll see that it's the > instruction itself that is there (i.e. you can dyn_cast<Instruction> > it).**** > > > On Mon, Aug 1, 2011 at 5:27 PM, Manish Gupta <manishg at cs.ucsd.edu> wrote: > > What member function to use if I wish to operate on results of an > > instruction. > > eg. > > Instruction %1 = getelementptr inbounds [10 x i32]* %a, i32 0, i32 %0 > > I->getOperand will give me the operands. > > How should I get hold of %1? > > Thanks, > > Manish**** > > > _______________________________________________ > > LLVM Developers mailing list > > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > > > >**** > > ** ** >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110802/040b4b06/attachment.html>