From ed89033d7c15db7bbc3c6c6dfb9495ac263b3a73 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 16 Feb 2015 20:22:57 +0100 Subject: re PR ipa/64963 (IPA Cloning/Splitting does not copy function section attributes resulting in kernel miscompilation) PR ipa/64963 * cgraphclones.c (cgraph_node::create_virtual_clone): Copy section if not linkonce. Fix up formatting. (cgraph_node::create_version_clone_with_body): Copy section. * trans-mem.c (ipa_tm_create_version): Likewise. * gcc.dg/ipa/ipa-clone-1.c: New test. Co-Authored-By: James Greenhalgh From-SVN: r220742 --- gcc/cgraphclones.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'gcc/cgraphclones.c') diff --git a/gcc/cgraphclones.c b/gcc/cgraphclones.c index 2a7de2e..863081e 100644 --- a/gcc/cgraphclones.c +++ b/gcc/cgraphclones.c @@ -577,7 +577,7 @@ cgraph_node::create_virtual_clone (vec redirect_callers, 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 redirect_callers, 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)) + new_node->set_section (get_section ()); /* Clones of global symbols or symbols with unique names are unique. */ if ((TREE_PUBLIC (old_decl) @@ -1009,6 +1011,7 @@ cgraph_node::create_version_clone_with_body new_version_node->externally_visible = 0; new_version_node->local.local = 1; new_version_node->lowered = true; + new_version_node->set_section (get_section ()); /* Clones of global symbols or symbols with unique names are unique. */ if ((TREE_PUBLIC (old_decl) && !DECL_EXTERNAL (old_decl) -- cgit v1.1