This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: identifying a BB representing a self-loop


From: Daniel Berlin <dberlin@dberlin.org>
To: sean yang <seanatpurdue@hotmail.com>
CC: gcc@gcc.gnu.org, seanatpurdue@purdue.edu
Subject: Re: identifying a BB representing a self-loop
Date: Fri, 19 May 2006 15:41:30 -0400

sean yang wrote:
> Some basic blocks may represent a (self) loop, but GCC's internal basic
> block representation won't show such information explicitly (i.e., it won't
> store a self-loop edge).
> My question is, when I walk through basic blocks, can I identify then
> easily?
>
> E.g., Let's say,
> ----------demo.c------------------------------------
> int main(){
> int i;
> int sum = 0;
> for (i=0; i< 10; i++){
> sum = sum+i;
> }
> }
> -----------------------------------------------------
> If we compile this by "#gcc -c -O -da demo.c, we can see there are only
> three BBs. Actually, BB1 is a self-looped basic block. But this loop
> information is not explicitly expressed.
>


What do you mean "not explicitly expressed".

If you call the loop finding routines (flow_loops_find), and look in the
result loop information, does it not give you a loop with a single node?

I meant that there is no edge like BB1-->BB1, if BB1 itself is a loop. For example,
for (i=0; i<5;i++){
for (j=0; j<5; j++){
sum +=j;
}
}
The control flow graph may looks like this (with -O option): B1 represents the inner loop(but no edge showing it's an loop); however, edge "B3-->B0" shows the outer loop explicitly.
B0 ---> B1----->B2-->B3
^ |
|___________|



But I think your answer (flow_loops_find) may have already answered my original question (how to know B1 is a loop. Thanks for the reply!


_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today - it's FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]