Aah ok. I thought them as labels as in RTL representation. Thanks alot for this. By the way, if I want to traverse through all the GIMPLE statements, then from where should I start? I mean what should be the reference point to capture those labels in the cfg. Regards Abdul On Tue, Jun 7, 2011 at 9:49 PM, Ian Lance Taylor <iant@xxxxxxxxxx> wrote: > Abdul Wahid Memon <engrwahidmemon@xxxxxxxxx> writes: > >> Lets take the dump at optimized pass. >> >> ;; Function main (main) >> >> main () >> { >> int i; >> int D.3251; >> const char * restrict D.3250; >> >> <bb 2>: >> i_2 = 0; >> goto <bb 4>; >> >> <bb 3>: >> D.3250_3 = (const char * restrict) &"hello world"[0]; >> printf (D.3250_3); >> i_4 = i_1 + 1; >> >> <bb 4>: >> # i_1 = PHI <i_2(2), i_4(3)> >> if (i_1 <= 100) >> goto <bb 3>; >> else >> goto <bb 5>; >> >> <bb 5>: >> D.3251_5 = 0; >> return D.3251_5; >> >> } >> >> Here in this case, Can I consider <bb x>: as labels? If yes then I am >> unable to encounter them in my code. > > Please reply to the mailing list, not just to me. Thanks. > > The <bb x> markers just indicate the start of basic blocks. They are > not GIMPLE_LABELs. They aren't represented in GIMPLE at all, they are > in the CFG. You will only get a GIMPLE_LABEL for an actual label in > your source code. > > Ian >