On Wed, Jun 29, 2016 at 9:13 PM, Prasad Ghangal
<prasad.ghan...@gmail.com> wrote:
> On 29 June 2016 at 22:15, Richard Biener <richard.guent...@gmail.com> wrote:
>> On June 29, 2016 6:20:29 PM GMT+02:00, Prathamesh Kulkarni 
>> <prathamesh.kulka...@linaro.org> wrote:
>>>On 18 June 2016 at 12:02, Prasad Ghangal <prasad.ghan...@gmail.com>
>>>wrote:
>>>> Hi,
>>>>
>>>> I tried hacking pass manager to execute only given passes. For this I
>>>> am adding new member as opt_pass *custom_pass_list to the function
>>>> structure to store passes need to execute and providing the
>>>> custom_pass_list to execute_pass_list() function instead of all
>>>passes
>>>>
>>>> for test case like-
>>>>
>>>> int a;
>>>> void __GIMPLE (execute ("tree-ccp1", "tree-fre1")) foo()
>>>> {
>>>> bb_1:
>>>>   a = 1 + a;
>>>> }
>>>>
>>>> it will execute only given passes i.e. ccp1 and fre1 pass on the
>>>function
>>>>
>>>> and for test case like -
>>>>
>>>> int a;
>>>> void __GIMPLE (startwith ("tree-ccp1")) foo()
>>>> {
>>>> bb_1:
>>>>   a = 1 + a;
>>>> }
>>>>
>>>> it will act as a entry point to the pipeline and will execute passes
>>>> starting from given pass.
>>>Bike-shedding:
>>>Would it make sense to have syntax for defining pass ranges to execute
>>>?
>>>for instance:
>>>void __GIMPLE(execute (pass_start : pass_end))
>>>which would execute all the passes within range [pass_start, pass_end],
>>>which would be convenient if the range is large.
>>
>> But it would rely on a particular pass pipeline, f.e. pass-start appearing 
>> before pass-end.
>>
>> Currently control doesn't work 100% as it only replaces all_optimizations 
>> but not lowering passes or early opts, nor IPA opts.
>>
>
> Each pass needs GIMPLE in some specific form. So I am letting lowering
> and early opt passes to execute. I think we have to execute some
> passes (like cfg) anyway to represent GIMPLE into proper form

Yes, that's true.  Note that early opt passes only optimize but we need
pass_build_ssa_passes at least (for into-SSA).  For proper unit-testing
of GIMPLE passes we do need to guard off early opts somehow
(I guess a simple if (flag_gimple && cfun->custom_pass_list) would do
that).

Then there is of course the question about IPA passes which I think is
somewhat harder (one could always disable all IPA passes manually
via flags of course or finally have a global -fipa/no-ipa like most
other compilers).

Richard.

>> Richard.
>>
>>>Thanks,
>>>Prathamesh
>>>>
>>>>
>>>>
>>>> Thanks,
>>>> Prasad Ghangal
>>
>>

Reply via email to