* cgraph.c (cgraph_make_decl_local): Handle DECL_ONE_ONLY
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 14 Jun 2011 12:48:06 +0000 (12:48 +0000)
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 14 Jun 2011 12:48:06 +0000 (12:48 +0000)
similarly to DECL_COMDAT.
* cgraphunit.c (cgraph_analyze_function): Likewise.
* ipa.c (function_and_variable_visibility): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@175015 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/cgraph.c
gcc/cgraphunit.c
gcc/ipa.c

index fdfe9c4..c1f7568 100644 (file)
@@ -1,5 +1,12 @@
 2011-06-13  Jan Hubicka  <jh@suse.cz>
 
+       * 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  <jh@suse.cz>
+
        * lto-streamer-out.c (lto_output_ts_binfo_tree_pointers): Do not output
        BINFO_VIRTUALS when streaming for ltrans unit.
 
index dfa5439..86e7207 100644 (file)
@@ -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
index b01f22b..0e7842c 100644 (file)
@@ -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)
                {
index 07a90b5..0edb344 100644 (file)
--- 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)
                {