[OpenACC 1/11] UNIQUE internal function
Jakub Jelinek
jakub@redhat.com
Fri Oct 23 13:12:00 GMT 2015
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
More information about the Gcc-patches
mailing list