From ee6f1177c27e94f9872cc8a1779cfa9138ed7308 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Tue, 14 Jun 2011 14:48:06 +0200 Subject: [PATCH] cgraph.c (cgraph_make_decl_local): Handle DECL_ONE_ONLY similarly to DECL_COMDAT. * cgraph.c (cgraph_make_decl_local): Handle DECL_ONE_ONLY similarly to DECL_COMDAT. * cgraphunit.c (cgraph_analyze_function): Likewise. * ipa.c (function_and_variable_visibility): Likewise. From-SVN: r175015 --- gcc/ChangeLog | 7 +++++++ gcc/cgraph.c | 2 +- gcc/cgraphunit.c | 4 ++-- gcc/ipa.c | 4 ++-- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fdfe9c4837b..c1f7568d541 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2011-06-13 Jan Hubicka + + * cgraph.c (cgraph_make_decl_local): Handle DECL_ONE_ONLY + similarly to DECL_COMDAT. + * cgraphunit.c (cgraph_analyze_function): Likewise. + * ipa.c (function_and_variable_visibility): Likewise. + 2011-06-13 Jan Hubicka * lto-streamer-out.c (lto_output_ts_binfo_tree_pointers): Do not output diff --git a/gcc/cgraph.c b/gcc/cgraph.c index dfa5439ad96..86e72072eab 100644 --- a/gcc/cgraph.c +++ b/gcc/cgraph.c @@ -2487,7 +2487,7 @@ cgraph_make_decl_local (tree decl) DECL_COMMON (decl) = 0; else gcc_assert (TREE_CODE (decl) == FUNCTION_DECL); - if (DECL_COMDAT (decl)) + if (DECL_ONE_ONLY (decl) || DECL_COMDAT (decl)) { /* It is possible that we are linking against library defining same COMDAT function. To avoid conflict we need to rename our local name of the diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c index b01f22b2b23..0e7842cd896 100644 --- a/gcc/cgraphunit.c +++ b/gcc/cgraphunit.c @@ -830,9 +830,9 @@ cgraph_analyze_function (struct cgraph_node *node) if (TREE_PUBLIC (node->decl) && node->same_body_alias) { DECL_EXTERNAL (node->decl) = DECL_EXTERNAL (node->thunk.alias); - if (DECL_COMDAT (node->thunk.alias)) + if (DECL_ONE_ONLY (node->thunk.alias)) { - DECL_COMDAT (node->decl) = 1; + DECL_COMDAT (node->decl) = DECL_COMDAT (node->thunk.alias); DECL_COMDAT_GROUP (node->decl) = DECL_COMDAT_GROUP (node->thunk.alias); if (DECL_ONE_ONLY (node->thunk.alias) && !node->same_comdat_group) { diff --git a/gcc/ipa.c b/gcc/ipa.c index 07a90b51203..0edb344c5e5 100644 --- a/gcc/ipa.c +++ b/gcc/ipa.c @@ -904,9 +904,9 @@ function_and_variable_visibility (bool whole_program) We also need to arrange the thunk into the same comdat group as the function it reffers to. */ - if (DECL_COMDAT (decl_node->decl)) + if (DECL_ONE_ONLY (decl_node->decl)) { - DECL_COMDAT (node->decl) = 1; + DECL_COMDAT (node->decl) = DECL_COMDAT (decl_node->decl); DECL_COMDAT_GROUP (node->decl) = DECL_COMDAT_GROUP (decl_node->decl); if (DECL_ONE_ONLY (decl_node->decl) && !node->same_comdat_group) { -- 2.30.2