trans-common.c (create_common): Set TREE_PUBLIC to false on fake variables.
authorRafael Avila de Espindola <espindola@google.com>
Wed, 28 Oct 2009 20:44:47 +0000 (20:44 +0000)
committerRafael Espindola <espindola@gcc.gnu.org>
Wed, 28 Oct 2009 20:44:47 +0000 (20:44 +0000)
2009-10-28  Rafael Avila de Espindola  <espindola@google.com>

* trans-common.c (create_common): Set TREE_PUBLIC to false on
fake variables.

2009-10-28  Rafael Avila de Espindola  <espindola@google.com>

* dbxout.c (dbxout_common_check): Accept non public trees.
* dwarf2out.c (fortran_common): Accept non public trees.

From-SVN: r153685

gcc/ChangeLog
gcc/dbxout.c
gcc/dwarf2out.c
gcc/fortran/ChangeLog
gcc/fortran/trans-common.c

index 5e75fff39d242d18491853e8abbd7d96442ee7f1..83efb79fb4d3b667222809aa7ccec36586e24a1a 100644 (file)
@@ -1,3 +1,8 @@
+2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
+
+       * dbxout.c (dbxout_common_check): Accept non public trees.
+       * dwarf2out.c (fortran_common): Accept non public trees.
+
 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
 
        * common.opt (fuse-linker-plugin): New option.
index b5688d98cf15aedd877aff92f062de095d1bd98e..0bf5e3cec2e02b971e88efdcb77a1d45510d525a 100644 (file)
@@ -3189,7 +3189,7 @@ dbxout_common_check (tree decl, int *value)
   rtx sym_addr;
   const char *name = NULL;
   
-  /* If the decl isn't a VAR_DECL, or if it isn't public or static, or if
+  /* If the decl isn't a VAR_DECL, or if it isn't static, or if
      it does not have a value (the offset into the common area), or if it
      is thread local (as opposed to global) then it isn't common, and shouldn't
      be handled as such.
@@ -3198,7 +3198,6 @@ dbxout_common_check (tree decl, int *value)
      for thread-local symbols.  Can be handled via same mechanism as used
      in dwarf2out.c.  */
   if (TREE_CODE (decl) != VAR_DECL
-      || !TREE_PUBLIC(decl)
       || !TREE_STATIC(decl)
       || !DECL_HAS_VALUE_EXPR_P(decl)
       || DECL_THREAD_LOCAL_P (decl)
index 129ba7de92748a66bf858c2263960ec53afd0c3d..732b6a6694be48bdb352ffa4dcfa0cfb3f4e5559 100644 (file)
@@ -15621,12 +15621,11 @@ fortran_common (tree decl, HOST_WIDE_INT *value)
   tree offset;
   int volatilep = 0, unsignedp = 0;
 
-  /* If the decl isn't a VAR_DECL, or if it isn't public or static, or if
+  /* If the decl isn't a VAR_DECL, or if it isn't static, or if
      it does not have a value (the offset into the common area), or if it
      is thread local (as opposed to global) then it isn't common, and shouldn't
      be handled as such.  */
   if (TREE_CODE (decl) != VAR_DECL
-      || !TREE_PUBLIC (decl)
       || !TREE_STATIC (decl)
       || !DECL_HAS_VALUE_EXPR_P (decl)
       || !is_fortran ())
index 8c333d8ca18e59395f5edc01cd6339498d7ff311..712c5a08cfc84ddc704c78eec7854f0250435499 100644 (file)
@@ -1,3 +1,8 @@
+2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
+
+       * trans-common.c (create_common): Set TREE_PUBLIC to false on
+       fake variables.
+
 2009-10-26  Janus Weil  <janus@gcc.gnu.org>
 
        PR fortran/41714
index 5b1952aee4a7f911aa03885e1210a2583c0146d2..1fb3c40f113aacc55f137241a1bb56754c3a1f7b 100644 (file)
@@ -680,7 +680,6 @@ create_common (gfc_common_head *com, segment_info *head, bool saw_equiv)
       var_decl = build_decl (s->sym->declared_at.lb->location,
                             VAR_DECL, DECL_NAME (s->field),
                             TREE_TYPE (s->field));
-      TREE_PUBLIC (var_decl) = TREE_PUBLIC (decl);
       TREE_STATIC (var_decl) = TREE_STATIC (decl);
       TREE_USED (var_decl) = TREE_USED (decl);
       if (s->sym->attr.use_assoc)
@@ -689,7 +688,9 @@ create_common (gfc_common_head *com, segment_info *head, bool saw_equiv)
        TREE_ADDRESSABLE (var_decl) = 1;
       /* This is a fake variable just for debugging purposes.  */
       TREE_ASM_WRITTEN (var_decl) = 1;
-      
+      /* Fake variables are not visible from other translation units. */
+      TREE_PUBLIC (var_decl) = 0;
+
       /* To preserve identifier names in COMMON, chain to procedure
          scope unless at top level in a module definition.  */
       if (com