Need info on GIMPLE
Abdul Wahid Memon
engrwahidmemon@gmail.com
Tue Jun 7 18:40:00 GMT 2011
Thanks Ian
I am sorry if I posed the question in a different way, but I just want
to count the number of labels (not case labels) but for jump
instructions but I am unable to encounter GIMPLE_LABEL. By the way, if
there is a jump instruction (whether conditional or unconditional)
there must be a label reference. I want to count those label
references.
Regards
Abdul
On Tue, May 31, 2011 at 7:46 AM, Ian Lance Taylor <iant@google.com> wrote:
> 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