On 09/15/2015 03:38 PM, Aditya K wrote:
> I started with one of the test cases in the plugin testsuite "def_plugin.c". 
> Pasted the code for convenience.
> I want to traverse all the loops in a function.
> 
> Maybe use, loops_for_fn (DECL_STRUCT_FUNCTION (fndef)), but this does not 
> seem to work.
> 
> 
> /* Callback function to invoke after GCC finishes a function definition. */
I guess, loop structure is initialized much later within the optimization
pipeline. I.e., PLUGIN_FINISH_PARSE_FUNCTION is invoked before all optimizers,
and (natural) loops are discovered by the "loopinit" pass.

Perhaps, you could try registering a pass using

register_callback (..., PLUGIN_PASS_MANAGER_SETUP, ...)

and make it run within pass_tree_loop (see gcc/passes.def for details). You
should also specify 'PROP_loops' in 'properties_required' of your 'pass_data'
structure. Then 'loops_for_fn' should work.

'selfassign.c' is a good example of a plugin which creates an optimization pass
(and 'dumb_plugin.c' is a good minimal example).

-- 
Regards,
    Mikhail Maltsev

Reply via email to