c-pragma.c (maybe_apply_pragma_weak): Don't get DECL_ASSEMBLER_NAME when it's not needed.

* c-pragma.c (maybe_apply_pragma_weak): Don't get DECL_ASSEMBLER_NAME
	when it's not needed.

From-SVN: r69646
This commit is contained in:
Geoffrey Keating 2003-07-21 20:53:07 +00:00 committed by Geoffrey Keating
parent 8c29550d3c
commit 49a64b2462
2 changed files with 20 additions and 8 deletions

View File

@ -1,3 +1,8 @@
2003-07-21 Geoffrey Keating <geoffk@apple.com>
* c-pragma.c (maybe_apply_pragma_weak): Don't get DECL_ASSEMBLER_NAME
when it's not needed.
2003-07-21 Jakub Jelinek <jakub@redhat.com>
* config/rs6000/rs6000.h (machine_function): Add ra_need_lr.

View File

@ -286,15 +286,22 @@ maybe_apply_pragma_weak (tree decl)
{
tree *p, t, id;
/* Copied from the check in set_decl_assembler_name. */
if (TREE_CODE (decl) == FUNCTION_DECL
|| (TREE_CODE (decl) == VAR_DECL
&& (TREE_STATIC (decl)
|| DECL_EXTERNAL (decl)
|| TREE_PUBLIC (decl))))
id = DECL_ASSEMBLER_NAME (decl);
else
/* Avoid asking for DECL_ASSEMBLER_NAME when it's not needed. */
/* No weak symbols pending, take the short-cut. */
if (!pending_weaks)
return;
/* If it's not visible outside this file, it doesn't matter whether
it's weak. */
if (!DECL_EXTERNAL (decl) && !TREE_PUBLIC (decl))
return;
/* If it's not a function or a variable, it can't be weak.
FIXME: what kinds of things are visible outside this file but
aren't functions or variables? Should this be an abort() instead? */
if (TREE_CODE (decl) != FUNCTION_DECL && TREE_CODE (decl) != VAR_DECL)
return;
id = DECL_ASSEMBLER_NAME (decl);
for (p = &pending_weaks; (t = *p) ; p = &TREE_CHAIN (t))
if (id == TREE_PURPOSE (t))