Thanks Sean. It clarified my query. Do you have an answer to my other question (in a different mail-chain) listed below Is there a simple way to check if a given instruction operand (represented by Value *) is a virtual register or otherwise? Context: I am creating a ModulePass for pointer Analysis. BR/Nizam From: "Sean Silva" <chisophugis at gmail.com> To: nizam at cse.iitm.ac.in Cc: "llvmdev" <llvmdev at cs.uiuc.edu> Sent: Monday, February 3, 2014 8:24:00 AM Subject: Re: [LLVMdev] LoadInst result Related: < http://llvm.org/docs/FAQ.html#what-api-do-i-use-to-store-a-value-to-one-of-the-virtual-registers-in-llvm-ir-s-ssa-representation > -- Sean Silva On Sat, Feb 1, 2014 at 3:43 AM, < nizam at cse.iitm.ac.in > wrote: Folks, I have a LLVM instruction like the following %0 = load i32** %pp, align 8 I have a LoadInst &inst handle to this instruction. In addition, i could access the pointer being loaded from using the inst.getPointerOperand... However, is there a way to access the handle to the value being loaded? Essentially, i wanted to access the %0 in the statement listed. The end goal is to do some amount of points-to analysis. I have this pointer %pp being loaded into %0 and later i have a store instruction storing %0 into some other pointer. If i cannot establish the %0 link here, i would not be able to establish points-to. Any help in this regards would be appreciated. Thanks BR/Nizam _______________________________________________ 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/20140203/57fdd8f5/attachment.html>
Hi Nizam,> Is there a simple way to check if a given instruction operand (represented > by Value *) is a virtual register or otherwise? Context: I am creating a > ModulePass for pointer Analysis.Values exist before any distinction is made between virtual and physical registers (they only get introduced after or, in rare cases at lowering to MachineInstrs). Or did you mean some distinction other than virtual/physical? What would you expect the Value to be if it's not a virtual register? Cheers. Tim.
Hi Tim, Assume a store instruction. Store has 2 Operands. I can use the store->getOperand(0) and store->getOperand(1) methods to access these operands in form of Value *. Very likely that the operands are stack variables or formal variables or global variables. It is also possible that these operands are LLVM virtual-registers. Is there a way to determine if a given operand is a virtual-register or memory-related-on. I hope this clarifies my question. BR/Nizam From: "Tim Northover" <t.p.northover at gmail.com> To: nizam at cse.iitm.ac.in Cc: "Sean Silva" <chisophugis at gmail.com>, "llvmdev" <llvmdev at cs.uiuc.edu> Sent: Monday, February 3, 2014 3:42:29 PM Subject: Re: [LLVMdev] LoadInst result Hi Nizam,> Is there a simple way to check if a given instruction operand (represented > by Value *) is a virtual register or otherwise? Context: I am creating a > ModulePass for pointer Analysis.Values exist before any distinction is made between virtual and physical registers (they only get introduced after or, in rare cases at lowering to MachineInstrs). Or did you mean some distinction other than virtual/physical? What would you expect the Value to be if it's not a virtual register? Cheers. Tim. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140203/a552a61c/attachment.html>