Need info on GIMPLE
Ian Lance Taylor
iant@google.com
Tue May 31 06:37:00 GMT 2011
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
More information about the Gcc-help
mailing list