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 > Richard. > >>Thanks, >>Prathamesh >>> >>> >>> >>> Thanks, >>> Prasad Ghangal > >