Hi David,

 I am very much thankful to you as your answer worked wonders for me.
The problem with the plugin is solved now. Thanks again.


On 3/5/14, David Malcolm <dmalc...@redhat.com> wrote:
> On Wed, 2014-03-05 at 21:58 +0530, Mohsin Khan wrote:
>> Hi,
>>
>>  I am developing plugins for the GCC-4.8.2. I am a newbie in plugins.
>> I wrote a plugin and tried to count and see the Goto Statements using
>> the gimple_stmt_iterator. I get gimple statements printed on my
>> stdout, but I am not able to find the line which has goto statements.
>> I only get other lines such as variable declaration and logic
>> statements, but no goto statements.
>>   When I open the Gimple/SSA/CFG file seperately using the vim editor
>> I find the goto statements are actually present.
>>   So, can anyone help me. How can I actually get the count of Goto
>> statements or atleast access these goto statements using some
>> iterator.
>>   I have used -fdump-tree-all, -fdump-tree-cfg as flags.
>>
>> Here is the pseudocode:
>>
>> struct register_pass_info pass_info = {
>> &(pass_plugin.pass),                         /* Address of new pass,
>> here, the 'struct
>>                                              opt_pass' field of
>> 'gimple_opt_pass'
>>                                              defined above */
>>         "ssa",                               /* Name of the reference
>> pass for hooking up
>>                                              the new pass.   ??? */
>>         0,                                   /* Insert the pass at the
>> specified instance
>>                                              number of the reference
>> pass. Do it for
>>                                              every instance if it is 0.
>> */
>>         PASS_POS_INSERT_AFTER                /* how to insert the new
>> pass: before,
>
> You're inserting your pass after the "ssa" pass, which converts the CFG
> to SSA form.  This is run *after* the function has been converted from a
> flat list of gimple statements into a CFG of basic blocks, and that CFG
> conversion eliminates the goto statements in favor of edges within the
> CFG.  If you see "goto" in the dump, that's presumably just a textual
> way of expressing an edge in the CFG.
>
> To see gimple goto statements, you need to run your pass *before* the
> convertion to CFG, which happens fairly early on, in the "cfg" pass
>
> FWIW there's a diagram showing the passes here:
> http://gcc-python-plugin.readthedocs.org/en/latest/tables-of-passes.html
>
>
> Hope this is helpful
> Dave
>
>

Regards
Mohsin Khan

Reply via email to