OSDN Git Service

* trans-mem.c (ipa_tm_create_version): Set externally_visible.
authoraldyh <aldyh@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 23 Jan 2012 17:53:51 +0000 (17:53 +0000)
committeraldyh <aldyh@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 23 Jan 2012 17:53:51 +0000 (17:53 +0000)
        (ipa_tm_create_version_alias): Same.

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

gcc/ChangeLog
gcc/testsuite/gcc.dg/tm/lto-1.c [new file with mode: 0644]
gcc/trans-mem.c

index c697580..c86d926 100644 (file)
@@ -1,3 +1,8 @@
+2012-01-23  Aldy Hernandez  <aldyh@redhat.com>
+
+       * trans-mem.c (ipa_tm_create_version): Set externally_visible.
+       (ipa_tm_create_version_alias): Same.
+
 2012-01-18  Uros Bizjak  <ubizjak@gmail.com>
 
        PR libitm/51830
diff --git a/gcc/testsuite/gcc.dg/tm/lto-1.c b/gcc/testsuite/gcc.dg/tm/lto-1.c
new file mode 100644 (file)
index 0000000..c254b3e
--- /dev/null
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-options "-fgnu-tm -flto" } */
+
+__attribute__((transaction_safe))
+void foo() 
+{
+}
+
+/* { dg-final { scan-assembler "ZGTt3foo" } } */
index 30dc4b3..de7a913 100644 (file)
@@ -4219,7 +4219,7 @@ struct create_version_alias_info
   tree new_decl;
 };
 
-/* A subrontine of ipa_tm_create_version, called via
+/* A subroutine of ipa_tm_create_version, called via
    cgraph_for_node_and_aliases.  Create new tm clones for each of
    the existing aliases.  */
 static bool
@@ -4259,6 +4259,7 @@ ipa_tm_create_version_alias (struct cgraph_node *node, void *data)
 
   new_node = cgraph_same_body_alias (NULL, new_decl, info->new_decl);
   new_node->tm_clone = true;
+  new_node->local.externally_visible = info->old_node->local.externally_visible;
   /* ?? Do not traverse aliases here.  */
   get_cg_data (&node, false)->clone = new_node;
 
@@ -4294,6 +4295,7 @@ ipa_tm_create_version (struct cgraph_node *old_node)
     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);
+  new_node->local.externally_visible = old_node->local.externally_visible;
   new_node->lowered = true;
   new_node->tm_clone = 1;
   get_cg_data (&old_node, true)->clone = new_node;