On Tue, Nov 22, 2011 at 8:06 AM, Aldy Hernandez <al...@redhat.com> wrote:
>> This looks weird -- you're seting D_C_G after H_C_G is false? >> >> We've already done copy_decl anyway -- you should be able to drop the >> else. > David, can you try the following and see if it fixes the problem on your > end? > > Index: trans-mem.c > =================================================================== > --- trans-mem.c (revision 181588) > +++ trans-mem.c (working copy) > @@ -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); > @@ -4233,7 +4233,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 (HAVE_COMDAT_GROUP && DECL_COMDAT (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); > I assume this will work because AIX never uses the info in DECL_COMDAT_GROUP. Note that ipa_tm_create_version() calls copy_node(), but ipa_tm_create_version_alias() *DOES NOT*, it calls build_decl(), so D_C_G will be garbage. Yes, setting D_C_G looks strange with !H_C_G, but note that many places in GCC blindly copy D_C_G or initialize it to 0. - David