[LLVMdev] LoadInst result

nizam at cse.iitm.ac.in nizam at cse.iitm.ac.in
Mon Feb 3 03:39:46 PST 2014


Hi Amara, 


Thanks for the response. 


Yes. I could use the LLVM custom RTTI implementation. However, i think there isnt a type called VirtualRegister. If it exists, i could do a dyn_cast<> to check if an operand (represented by Value *) is indeed virtual-register or not. I hope i explained the problem i am facing. 


BR/Nizam 





From: "Amara Emerson" <amara.emerson at gmail.com> 
To: nizam at cse.iitm.ac.in 
Cc: "Tim Northover" <t.p.northover at gmail.com>, "Sean Silva" <chisophugis at gmail.com>, "llvmdev" <llvmdev at cs.uiuc.edu> 
Sent: Monday, February 3, 2014 4:45:28 PM 
Subject: Re: [LLVMdev] LoadInst result 

You can use the LLVM custom RTTI implementation to distinguish between 
different kinds of Value using dyn_cast<>, isa<>. See 
http://llvm.org/docs/ProgrammersManual.html#the-isa-cast-and-dyn-cast-templates 

As Tim said, Values exist before regalloc. When you see a reference 
like %foo in the IR, it's a reference to the Value, not the actual 
virtual register. 

Amara 

On 3 February 2014 10:19, <nizam at cse.iitm.ac.in> wrote: 
> 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. 
> 
> _______________________________________________ 
> 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/70ef7bf6/attachment.html>


More information about the llvm-dev mailing list