On Wed, Oct 21, 2015 at 11:19 AM, Martin Liška <mli...@suse.cz> wrote: > On 10/20/2015 03:39 PM, Richard Biener wrote: >> On Tue, Oct 20, 2015 at 3:00 PM, Martin Liška <mli...@suse.cz> wrote: >>> Hello. >>> >>> As part of upcoming merge of HSA branch, we would like to have possibility >>> to terminate >>> pass manager after execution of the HSA generation pass. The HSA back-end >>> is implemented >>> as a tree pass that directly emits HSAIL from gimple tree representation. >>> The pass operates >>> on clones created by HSA IPA pass and the pass manager should stop >>> execution of further >>> RTL passes. >>> >>> Suggested patch survives bootstrap and regression tests on x86_64-linux-pc. >>> >>> What do you think about it? >> >> Are you sure it works this way? >> >> Btw, you will miss executing of all the cleanup passes that will >> eventually free memory >> associated with the function. So I'd rather support a >> TODO_discard_function which >> should basically release the body from the cgraph. > > Hi. > > Agree with you that I should execute all TODOs, which can be easily done. > However, if I just try to introduce the suggested TODO and handle it properly > by calling cgraph_node::release_body, then for instance fn->gimple_df, > fn->cfg are > released and I hit ICEs on many places. > > Stopping the pass manager looks necessary, or do I miss something?
"Stopping the pass manager" is necessary after TODO_discard_function, yes. But that may be simply done via a has_body () check then? > Thanks, > Martin > >> >> Richard. >> >>> Thanks, >>> Martin >