Re: Help Required on Missing GOTO statements in Gimple/SSA/CFG Pass ...

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Feb 12, 2014 at 10:22 PM, Mohsin Khan <mohsin1510@xxxxxxxxx> 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.
Try using gimple_lineno()

> 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,
>                                              after, or replace. Here
> we are inserting
>                                              a pass names 'plug' after
> the pass named
>                                              'pta' */
> };
>
>
> .............
>
> static unsigned int dead_code_elimination (void)
> {
>
>    FOR_EACH_BB_FN (bb, cfun)
>      {
>           //  gimple_dump_bb(stdout,bb,0,0);
>          //    printf("\nIn New BB");
>
>            gsi2= gsi_after_labels (bb);
>           print_gimple_stmt(stdout,gsi_stmt(gsi2),0,0);
>              /*Iterating over each gimple statement in a basic block*/
>                 for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
>                 {
>            g = gsi_stmt(gsi);
>
>         print_gimple_stmt(stdout,g,0,0);
>
>               if (gimple_code(g)==GIMPLE_GOTO)
>                       printf("\nFound GOTO stmt\n");
>
>
>             print_gimple_stmt(stdout,gsi_stmt(gsi),0,0);
>       //    analyze_gimple_statement (gsi);
>              }
>        }
> }




[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux