On Mon, Feb 16, 2015 at 07:23:33PM +0100, Jan Hubicka wrote: > > --- gcc/cgraphclones.c.jj 2015-01-09 21:59:44.000000000 +0100 > > +++ gcc/cgraphclones.c 2015-02-16 14:02:16.564725881 +0100 > > @@ -577,7 +577,7 @@ cgraph_node::create_virtual_clone (vec<c > > char *name; > > > > if (!in_lto_p) > > - gcc_checking_assert (tree_versionable_function_p (old_decl)); > > + gcc_checking_assert (tree_versionable_function_p (old_decl)); > > > > gcc_assert (local.can_change_signature || !args_to_skip); > > > > @@ -617,6 +617,8 @@ cgraph_node::create_virtual_clone (vec<c > > ABI support for this. */ > > set_new_clone_decl_and_node_flags (new_node); > > new_node->clone.tree_map = tree_map; > > + if (!DECL_ONE_ONLY (old_decl)) > > Instead of DECL_ONE_ONLY you want to test implicit_section flag. I think > resolving unique section with -ffunction-section is also needed.
DECL_ONE_ONLY was the test that 4.9 has been using here: /* Update the properties. Make clone visible only within this translation unit. Make sure that is not weak also. ??? We cannot use COMDAT linkage because there is no ABI support for this. */ if (DECL_ONE_ONLY (old_decl)) DECL_SECTION_NAME (new_node->decl) = NULL; therefore I wanted to match the 4.9 behavior, before we try something different incrementally. > > + new_node->set_section (this->get_section ()); > > No need for this->... Sure, can change that. Jakub