[LLVMdev] LoopInfo of a basic block

John Criswell criswell at illinois.edu
Mon Feb 28 14:52:01 PST 2011


On 2/28/11 4:43 PM, Devang Patel wrote:
>
> On Feb 28, 2011, at 2:35 PM, Naznin Fauzia wrote:
>
>> Hi all,
>>
>> How Can I get the Loops around an Instruction?
>>
>> I know I can get the basic block of an instruction using 
>> inst.getParent() which returns a BasicBlock*. Now I want to use the 
>> getLoopFor(BasicBlock) method of the class LoopInfo.
>> But I dont know how to get the LoopInfo.
>>
>> BasicBlock* bb = inst.getParent();
>>
>> (... what should I add here?)
>>
>> Loop* innerloop = LI -> getLoopFor(bb):
>>
>
> Two steps:
> 1) In your pass's getAnalysisUsage(), request LoopInfo.
>
> virtual void getAnalysisUsage(AnalysisUsage &AU) const {
>   AU.addRequired<LoopInfo>();
> }
>
> 2) In your runOnLoop() method get the analysis.
>
> LoopPass *LI = &getAnalysis<LoopInfo>();
>
> Now, you can do LI->getLoopFor(...)

To add to what Devang has said, you may find the doxygen docs on 
LoopInfo helpful:

http://llvm.org/doxygen/classllvm_1_1LoopInfo.html

-- John T.


>
> -
> Devang
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110228/f134922d/attachment.html>


More information about the llvm-dev mailing list