diff options
| -rw-r--r-- | gcc/ChangeLog | 3 | ||||
| -rw-r--r-- | gcc/varasm.c | 8 |
2 files changed, 7 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6e0c9a4..dad6de4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -6,6 +6,9 @@ invalidated_by_call. Initialize from regs_invalidated_by_call instead of call_used_regs. + * varasm.c (default_binds_local_p): Check TREE_PUBLIC before + DECL_EXTERNAL. + 2002-05-28 Zack Weinberg <zack@codesourcery.com> * tree.h: Forward-declare struct realvaluetype. diff --git a/gcc/varasm.c b/gcc/varasm.c index 89eb47e..73ba7cd 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -5597,7 +5597,10 @@ default_binds_local_p (exp) /* A non-decl is an entry in the constant pool. */ if (!DECL_P (exp)) local_p = true; - /* A variable is considered "local" if it is defined by this module. */ + /* Static variables are always local. */ + else if (! TREE_PUBLIC (exp)) + local_p = true; + /* A variable is local if the user tells us so. */ else if (MODULE_LOCAL_P (exp)) local_p = true; /* Otherwise, variables defined outside this object may not be local. */ @@ -5606,9 +5609,6 @@ default_binds_local_p (exp) /* Linkonce and weak data are never local. */ else if (DECL_ONE_ONLY (exp) || DECL_WEAK (exp)) local_p = false; - /* Static variables are always local. */ - else if (! TREE_PUBLIC (exp)) - local_p = true; /* If PIC, then assume that any global name can be overridden by symbols resolved from other modules. */ else if (flag_pic) |
