This is the mail archive of the gcc-help@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: Need info on GIMPLE


Abdul Wahid Memon <engrwahidmemon@gmail.com> writes:

> I need to count the number of labels present in the representation
> such as after optimized pass, but
> I dont know why I don't encounter label statement in my switch
> statement's case clause even though
> there are some labels present. I am using iterators over basic blocks
> and statement to determine how many
> statement are there and which type.
>
>  FOR_EACH_BB(bb)
>   {
>    for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
>       {
>
> 	switch(gimple_code(stmt))
> 	  {
> 	    case GIMPLE_NOP:
> 	    printf("NOP : ");
> 	    break;
> 	  case GIMPLE_COND:
> 	    printf("COND_STMT / ");
> 	    break;
> 	  case GIMPLE_LABEL:
> 	    printf("LABEL / ");
> 	    break;
>         }
>     }
> }
>
> Other cases are being matched such as GIMPLE_COND but not
> GIMPLE_LABEL. Is there anything I am missing.

Case labels are never GIMPLE_LABEL statements.  Either the switch is
turned into a series of conditionals and the labels are discarded, or
you get a GIMPLE_SWITCH which incorporates CASE_LABEL_EXPR tree nodes
(see GIMPLE_SWITCH in gimple.def).

Ian


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