alpha.c (alpha_encode_section_info): Examine MODULE_LOCAL_P; improve commentary.
authorRichard Henderson <rth@redhat.com>
Wed, 27 Feb 2002 01:48:57 +0000 (17:48 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Wed, 27 Feb 2002 01:48:57 +0000 (17:48 -0800)
        * config/alpha/alpha.c (alpha_encode_section_info): Examine
        MODULE_LOCAL_P; improve commentary.

From-SVN: r50082

gcc/ChangeLog
gcc/config/alpha/alpha.c

index 05415534fc7f0a21f4d2ece1fd3c602519fe8b33..dedadf28f3e3e3fd8513a47b3451b61c3914fa94 100644 (file)
@@ -1,3 +1,8 @@
+2002-02-26  Richard Henderson  <rth@redhat.com>
+
+       * config/alpha/alpha.c (alpha_encode_section_info): Examine
+       MODULE_LOCAL_P; improve commentary.
+
 2002-02-26  Zack Weinberg  <zack@codesourcery.com>
 
        * doc/cpp.texi: Clarify documentation of relationship between
index 7710be58b60e1526ffe837f72d35a45ceac55028..aea7471f1ad2a646731790249abbc34c4d716555 100644 (file)
@@ -1566,6 +1566,7 @@ alpha_encode_section_info (decl)
         don't know that they exist in this unit of translation.  */
       if (TREE_PUBLIC (decl))
        return;
+
       /* Do not mark functions that are not in .text; otherwise we
         don't know that they are near enough for a direct branch.  */
       if (! decl_in_text_section (decl))
@@ -1589,11 +1590,16 @@ alpha_encode_section_info (decl)
 
   /* A variable is considered "local" if it is defined in this module.  */
 
-  if (DECL_EXTERNAL (decl))
+  /* Local binding occurs for any non-default visibility.  */
+  if (MODULE_LOCAL_P (decl))
+    is_local = true;
+  /* Otherwise, variables defined outside this object may not be local.  */
+  else if (DECL_EXTERNAL (decl))
     is_local = false;
   /* Linkonce and weak data is never local.  */
   else if (DECL_ONE_ONLY (decl) || DECL_WEAK (decl))
     is_local = false;
+  /* Static variables are always local.  */
   else if (! TREE_PUBLIC (decl))
     is_local = true;
   /* If PIC, then assume that any global name can be overridden by