go-gcc.cc (Gcc_backend::immutable_struct): Set TREE_PUBLIC if the struct is not hidden.
authorIan Lance Taylor <iant@google.com>
Thu, 29 Aug 2013 00:49:36 +0000 (00:49 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Thu, 29 Aug 2013 00:49:36 +0000 (00:49 +0000)
* go-gcc.cc (Gcc_backend::immutable_struct): Set TREE_PUBLIC if
the struct is not hidden.
(Gcc_backend::immutable_struct_set_init): Don't set TREE_PUBLIC.

From-SVN: r202065

gcc/go/ChangeLog
gcc/go/go-gcc.cc

index d2997de3da8d79fbc031c367dbc1a4637184437a..c730ecaa183d6652e814376bf2ef9bf8db529561 100644 (file)
@@ -1,3 +1,9 @@
+2013-08-28  Ian Lance Taylor  <iant@google.com>
+
+       * go-gcc.cc (Gcc_backend::immutable_struct): Set TREE_PUBLIC if
+       the struct is not hidden.
+       (Gcc_backend::immutable_struct_set_init): Don't set TREE_PUBLIC.
+
 2013-08-06  Ian Lance Taylor  <iant@google.com>
 
        * go-gcc.cc (Gcc_backend::immutable_struct_set_init): Use
index 1ecfaffd73a4f12db0f958ef7df7e02f16a196d9..025bb2bdca068754cc9a06c8515d85d18afa1860 100644 (file)
@@ -1475,8 +1475,8 @@ Gcc_backend::temporary_variable(Bfunction* function, Bblock* bblock,
 // Create a named immutable initialized data structure.
 
 Bvariable*
-Gcc_backend::immutable_struct(const std::string& name, bool, bool,
-                             Btype* btype, Location location)
+Gcc_backend::immutable_struct(const std::string& name, bool is_hidden,
+                             bool, Btype* btype, Location location)
 {
   tree type_tree = btype->get_tree();
   if (type_tree == error_mark_node)
@@ -1490,6 +1490,8 @@ Gcc_backend::immutable_struct(const std::string& name, bool, bool,
   TREE_CONSTANT(decl) = 1;
   TREE_USED(decl) = 1;
   DECL_ARTIFICIAL(decl) = 1;
+  if (!is_hidden)
+    TREE_PUBLIC(decl) = 1;
 
   // We don't call rest_of_decl_compilation until we have the
   // initializer.
@@ -1503,8 +1505,7 @@ Gcc_backend::immutable_struct(const std::string& name, bool, bool,
 
 void
 Gcc_backend::immutable_struct_set_init(Bvariable* var, const std::string&,
-                                      bool is_hidden, bool is_common, Btype*,
-                                      Location,
+                                      bool, bool is_common, Btype*, Location,
                                       Bexpression* initializer)
 {
   tree decl = var->get_tree();
@@ -1515,12 +1516,7 @@ Gcc_backend::immutable_struct_set_init(Bvariable* var, const std::string&,
   DECL_INITIAL(decl) = init_tree;
 
   // We can't call make_decl_one_only until we set DECL_INITIAL.
-  if (!is_common)
-    {
-      if (!is_hidden)
-       TREE_PUBLIC(decl) = 1;
-    }
-  else
+  if (is_common)
     make_decl_one_only(decl, DECL_ASSEMBLER_NAME(decl));
 
   // These variables are often unneeded in the final program, so put