aboutsummaryrefslogtreecommitdiff
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
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
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/tree.c3
-rw-r--r--gcc/varasm.c14
3 files changed, 18 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d323b75..b93e2d1 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Fri Jun 19 23:06:33 1998 Jason Merrill <jason@yorick.cygnus.com>
+
+ * varasm.c (assemble_start_function): Add weak_global_object_name.
+ * tree.c (get_file_function_name): Use it.
+
Fri Jun 19 22:55:14 1998 Jeffrey A Law (law@cygnus.com)
* c-lang.c (GNU_xref_begin, GNU_xref_end): Deleted.
diff --git a/gcc/tree.c b/gcc/tree.c
index f388cea..75e1e1f 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -4793,6 +4793,7 @@ dump_tree_statistics ()
#endif /* NO_DOLLAR_IN_LABEL */
extern char * first_global_object_name;
+extern char * weak_global_object_name;
/* If KIND=='I', return a suitable global initializer (constructor) name.
If KIND=='D', return a suitable global clean-up (destructor) name. */
@@ -4806,6 +4807,8 @@ get_file_function_name (kind)
if (first_global_object_name)
p = first_global_object_name;
+ else if (weak_global_object_name)
+ p = weak_global_object_name;
else if (main_input_filename)
p = main_input_filename;
else
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