https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90900
--- Comment #6 from rguenther at suse dot de <rguenther at suse dot de> --- On Tue, 18 Jun 2019, jakub at gcc dot gnu.org wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90900 > > --- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> --- > (In reply to rguent...@suse.de from comment #4) > > On Tue, 18 Jun 2019, jakub at gcc dot gnu.org wrote: > > > > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90900 > > > > > > --- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- > > > It is certainly invalid to goto *x; from outside of an OpenMP structured > > > block > > > to inside it or vice versa, this testcase doesn't do that though. And the > > > NOTE_INSN_DELETED_LABEL is in the end in a different function from the > > > use. > > > > So this also means we cannot really outline the function this way or > > rather the outlining process would need to mark the label as > > DECL_NONLOCAL? > > We have to outline, there is no way around it. And not really sure how would > we know during the outlining whether the label is referenced from outside of > the SESE region, we certainly don't walk the whole function IL at this point. > DECL_NONLOCAL is a label that may be jumped to from the nested function, that > is not the case, there can't be a jump to that label from another function, > just useless reference. So, if we can reference NOTE_INSN_DELETED_LABEL from > another function, that is good enough. OK, see the patch I posted.