aboutsummaryrefslogtreecommitdiff
path: root/gcc/varasm.c
diff options
context:
space:
mode:
authorJason Merrill <jason@yorick.cygnus.com>1998-06-19 22:09:24 +0000
committerJeff Law <law@gcc.gnu.org>1998-06-19 16:09:24 -0600
commitee8303096a7ad4bfdac14ed8ad8cfa437f2f5e30 (patch)
tree9a6e1923f7e7d063af614201d24d4b3fece19f1c /gcc/varasm.c
parent0d091530be45c4f0cd0cb86fd881c3446f967958 (diff)
downloadgcc-ee8303096a7ad4bfdac14ed8ad8cfa437f2f5e30.zip
gcc-ee8303096a7ad4bfdac14ed8ad8cfa437f2f5e30.tar.gz
gcc-ee8303096a7ad4bfdac14ed8ad8cfa437f2f5e30.tar.bz2
varasm.c (assemble_start_function): Add weak_global_object_name.
* varasm.c (assemble_start_function): Add weak_global_object_name. * tree.c (get_file_function_name): Use it. From-SVN: r20612
Diffstat (limited to 'gcc/varasm.c')
-rw-r--r--gcc/varasm.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/gcc/varasm.c b/gcc/varasm.c
index cd65c90..22b752d 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -85,6 +85,7 @@ extern FILE *asm_out_file;
/* The (assembler) name of the first globally-visible object output. */
char *first_global_object_name;
+char *weak_global_object_name;
extern struct obstack *current_obstack;
extern struct obstack *saveable_obstack;
@@ -1003,14 +1004,19 @@ assemble_start_function (decl, fnname)
if (TREE_PUBLIC (decl))
{
- if (!first_global_object_name && ! DECL_WEAK (decl)
- && ! DECL_ONE_ONLY (decl))
+ if (! first_global_object_name)
{
char *p;
+ char **name;
+
+ if (! DECL_WEAK (decl) && ! DECL_ONE_ONLY (decl))
+ name = &first_global_object_name;
+ else
+ name = &weak_global_object_name;
STRIP_NAME_ENCODING (p, fnname);
- first_global_object_name = permalloc (strlen (p) + 1);
- strcpy (first_global_object_name, p);
+ *name = permalloc (strlen (p) + 1);
+ strcpy (*name, p);
}
#ifdef ASM_WEAKEN_LABEL