> 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.
OK. implicit_section is trye only for DECL_ONE_ONLY declarations and those that was named by resolve_unique_section via -ffunction-sections, so the change should be safe, but lets first go with immitating 4.9 behaviour. Incremetnally I think we should fix this and also teach inliner to not make code travel in between user named sections. This may become more issue with an LTO kernel builds. Honza > > > > + new_node->set_section (this->get_section ()); > > > > No need for this->... > > Sure, can change that. > > Jakub