On Mon, Nov 28, 2011 at 7:02 PM, Richard Henderson <r...@redhat.com> wrote:
> On 11/28/2011 03:54 PM, David Edelsohn wrote:
>> On Wed, Nov 23, 2011 at 8:57 AM, Jakub Jelinek <ja...@redhat.com> wrote:
>>> On Wed, Nov 23, 2011 at 07:47:46AM -0600, Aldy Hernandez wrote:
>>>>>> @@ -4198,7 +4198,7 @@ ipa_tm_create_version_alias (struct cgra
>>>>>>   TREE_SYMBOL_REFERENCED (tm_name) = 1;
>>>>>>
>>>>>>   /* Perform the same remapping to the comdat group.  */
>>>>>> -  if (DECL_COMDAT (new_decl))
>>>>>> +  if (HAVE_COMDAT_GROUP&&  DECL_COMDAT (new_decl))
>>>>>>     DECL_COMDAT_GROUP (new_decl) = tm_mangle (DECL_COMDAT_GROUP 
>>>>>> (old_decl));
>>>>>>
>>>>>>   new_node = cgraph_same_body_alias (NULL, new_decl, info->new_decl);
>>>
>>> Wouldn't it be better to test if (DECL_ONE_ONLY (new_decl))
>>> instead?  That is actually test for non-NULL DECL_COMDAT_GROUP
>>> and is what e.g. cp/ uses as guards on tweaking DECL_COMDAT_GROUP.
>>>
>>> BTW, the formatting is wrong above, no space before && and two spaces after
>>> it.
>>
>> That will work as well.
>>
>> Which solution should be committed?
>
> Please use the DECL_ONE_ONLY test.

A patch using DECL_ONE_ONLY works for me as well.  Can someone approve
that version of the patch?

        * trans-mem.c (ipa_tm_create_version_alias): Mangle new_decl
if DECL_ONE_ONLY.
        (ipa_tm_create_version): Same.

Thanks, David

Index: trans-mem.c
===================================================================
--- trans-mem.c (revision 181793)
+++ trans-mem.c (working copy)
@@ -4213,7 +4213,7 @@ ipa_tm_create_version_alias (struct cgra
   TREE_SYMBOL_REFERENCED (tm_name) = 1;

   /* Perform the same remapping to the comdat group.  */
-  if (DECL_COMDAT (new_decl))
+  if (DECL_ONE_ONLY (new_decl))
     DECL_COMDAT_GROUP (new_decl) = tm_mangle (DECL_COMDAT_GROUP (old_decl));

   new_node = cgraph_same_body_alias (NULL, new_decl, info->new_decl);
@@ -4248,7 +4248,7 @@ ipa_tm_create_version (struct cgraph_nod
   TREE_SYMBOL_REFERENCED (tm_name) = 1;

   /* Perform the same remapping to the comdat group.  */
-  if (DECL_COMDAT (new_decl))
+  if (DECL_ONE_ONLY (new_decl))
     DECL_COMDAT_GROUP (new_decl) = tm_mangle (DECL_COMDAT_GROUP (old_decl));

   new_node = cgraph_copy_node_for_versioning (old_node, new_decl, NULL, NULL);

Reply via email to