[LLVMdev] iterate over loops inside the runOnFunction

Zheng Wang jason.wangz at gmail.com
Tue Apr 20 05:29:29 PDT 2010


Here is an example. You can also check lib/Scalar/LoopUnroll.cpp.

-----------------------------------
void getAnalysisUsage(AnalysisUsage &AU) const {
                        AU.addRequired<LoopInfo>();
                        AU.addPreserved<LoopInfo>();
                        ...
                }


virtual bool runOnFunction(Function &F)
{
LoopInfo &LI = getAnalysis<LoopInfo>();
for (LoopInfo::iterator i = LI.begin(), e =
                                        LI.end(); i != e; ++i) {


         //This is for subLoops ... and you can iteratively do it as the same.
         std::vector<Loop*> subLoops = i->getSubLoops();
}
-----------------

}
On 20 April 2010 12:22, khaled hamidouche <khaledhamidouche at gmail.com> wrote:
> Hello
> I'm wandring to write a Function parser that iterates over loops inside each
> function and inside each loop iterates over instructions
>
> So I found a way to do the Function parser that iterates over  BasicBlocks
> (using the runOnfunction Pass)  but I no know how make it iterates over
> loops ?
>
> So my question is there any way to make a loop inside the runOnfunction to
> iterate over "loops" (just like with the Basicblock loop   "for
> (BasicBlock::iterator i = b->begin(), ie = b->end(); i != ie; ++i) " ) ?
>
> Thank you so much for helping me
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>



-- 
Best regards,

WANG Zheng




More information about the llvm-dev mailing list