summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2002-02-27 01:48:57 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2002-02-27 01:48:57 +0000
commitc67ce487a6b9f29fde8bb6d5dddcbd29c9f0ba86 (patch)
tree74662ace933747fc88e3af3266270e3c955eae45 /gcc
parent1a3a76924b8c2a0eb305c714363ab9c45e13cf2c (diff)
downloadgcc-c67ce487a6b9f29fde8bb6d5dddcbd29c9f0ba86.tar.gz
* config/alpha/alpha.c (alpha_encode_section_info): Examine
MODULE_LOCAL_P; improve commentary. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@50082 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/alpha/alpha.c8
2 files changed, 12 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 05415534fc7..dedadf28f3e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
index 7710be58b60..aea7471f1ad 100644
--- a/gcc/config/alpha/alpha.c
+++ b/gcc/config/alpha/alpha.c
@@ -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