This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [OpenACC 1/11] UNIQUE internal function
- From: Jakub Jelinek <jakub at redhat dot com>
- To: Nathan Sidwell <nathan at acm dot org>
- Cc: Richard Biener <richard dot guenther at gmail dot com>, GCC Patches <gcc-patches at gcc dot gnu dot org>, Bernd Schmidt <bschmidt at redhat dot com>, Jason Merrill <jason at redhat dot com>, "Joseph S. Myers" <joseph at codesourcery dot com>
- Date: Fri, 23 Oct 2015 15:03:13 +0200
- Subject: Re: [OpenACC 1/11] UNIQUE internal function
- Authentication-results: sourceware.org; auth=none
- References: <5627DD78 dot 9040302 at acm dot org> <5627E0DF dot 9050507 at acm dot org> <20151022080444 dot GC478 at tucnak dot redhat dot com> <CAFiYyc09Kkx3uGPJWSYkuyRPEMLjY5Uk8r=72jp6L7kj84O9Dw at mail dot gmail dot com> <5628EC53 dot 9090006 at acm dot org> <CAFiYyc3f1zdjZo7WyMHPXZkxNYbfVXa+2N8wMuB4fxKxtEiwDA at mail dot gmail dot com> <562925BE dot 805 at acm dot org> <20151023082545 dot GA478 at tucnak dot redhat dot com> <562A2EAD dot 2020802 at acm dot org>
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
On Fri, Oct 23, 2015 at 08:57:17AM -0400, Nathan Sidwell wrote:
> >If you want to force end of a BB after the IFN_UNIQUE call, then you can just
> >gimple_call_set_ctrl_altering (gcall, true);
> >on it, and probably tweak gimple_call_initialize_ctrl_altering
> >so that it does that by default. Plus of course split the blocks after it
> >when you emit it.
>
> IIUC this won't require RETURNS_TWICE, correct? We're generate these seqs
It doesn't require that, sure.
> to a gimple sequence that eventually gets attached to the graph at the end
> of lower omp_for with:
>
> gimple_bind_set_body (new_stmt, body);
> gimple_omp_set_body (stmt, NULL);
> gimple_omp_for_set_pre_body (stmt, NULL);
>
> Presumably that sequence will have to be split in the manner you describe
> somewhere else. Not sure where that might be?
If this is during the omplower pass, then it is before cfg pass and
therefore all you need is tweak the gimple_call_initialize_ctrl_altering
function and the cfg pass will DTRT.
> Any thoughts on the approach of adding a flag to struct function, and having
> tracer to skip such functions?
It could still be expensive if functions with that flag set contain very
large basic blocks.
Jakub