> On Wed, Apr 20, 2022 at 01:47:43PM +0200, Martin Jambor wrote: > > Hi, > > > > On Wed, Apr 20 2022, Jan Hubicka via Gcc-patches wrote: > > >> On Wed, 20 Apr 2022, Jakub Jelinek wrote: > > > > [...] > > > > >> > > > >> > if ((flag_openacc || flag_openmp) > > >> > && lookup_attribute ("omp declare target", DECL_ATTRIBUTES > > >> > (decl))) > > >> > --- gcc/cgraphclones.cc.jj 2022-01-18 11:58:58.948991114 +0100 > > >> > +++ gcc/cgraphclones.cc 2022-04-19 13:38:43.594262397 +0200 > > >> > @@ -394,6 +394,7 @@ cgraph_node::create_clone (tree new_decl > > >> > new_node->versionable = versionable; > > >> > new_node->can_change_signature = can_change_signature; > > >> > new_node->redefined_extern_inline = redefined_extern_inline; > > >> > + new_node->semantic_interposition = semantic_interposition; > > > > > > This indeed makes sense to me. > > > > but that means theat create_clone (and therefore also > > create_virtual_clone) now creates nodes which are both local and > > potentially interposable... is that what we want? (Does the local flag > > make the interposition flag meaningless in that case?) > > Usually set_new_clone_decl_and_node_flags is called afterwards and that > makes both the decl local and clears node->semantic_interposition. > The above is just for the case when that isn't done.
We also simply ignore semantic_interposition flag on everything local. But indeed perhaps for consistency purposes we should force it to false whenever externally_visible is false. But more sanity checkers only in stage1 :) Honza > > Jakub >