[LLVMdev] How to find the first block of each loop

Eric Lu eirc.lew at gmail.com
Tue May 21 22:47:21 PDT 2013


Sorry, it is my fault to cause the problem, I will take back the mail.
FWIW, I like to shared some experiences on this problem.
What to do:
 I want to insert a control-block before every outermost loop. My current
solution is: 1) find each outermost loop in some function; 2) find the loop
header with Loop->getHeader() APIs, and then insert the controller block
before the header block of current loop.


In the  first, I don't know we can get the outermost loop list from
LoopInfo, so, I iterate over the BB of function and usr LI->getLoopFor(BB),
to get the Loop object CurLoop, then to do something else...., And I made a
mistake in this process.

Now, I find we can get Loop object from LoopInfo like the follow example
LoopInfo::iterator LIB = LI->begin;

*LIB points to the outer most loop of the function.  It is done now.

Sorry for bothering all of you!


Eric Lu




On Tue, May 21, 2013 at 3:41 PM, Eric Lu <eirc.lew at gmail.com> wrote:

> Hello,
>   I want to insert a control-block before every outermost loop. My current
> solution is: 1) find each outermost loop in some function; 2) find the loop
> header with Loop->getHeader() APIs, and then insert the controller block
> before the header block of current loop.
>
> But I encounters problems when there multi subsequent loops in the
> following example, where there is no code between loops:
>
> for( i = 0 ; i < N; i++){
>    arrayA[i] = i + 1;
> }
>
>
> for( j = 0 ; j < N; j++){
>    arrayA[j] = j + 1;
> }
>
>
> for( k = 0 ; k < N; k++){
>    arrayC[k] = k + 1;
> }
>
> In this case, these loops have the same header block, so the previous
> method failed.  And it seems the method of block_begin() returns the same
> value as getHeader().
> Are there some other methods to implement this ?
>
> Thanks!
>
> Eric
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130522/d2023bd7/attachment.html>


More information about the llvm-dev mailing list