From 4d7d0451bcd5437c1a0c2c852784427e87297024 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Thu, 26 Jun 2003 00:14:26 +0200 Subject: [PATCH] c-common.c (handle_used_attribute): Use mark_referenced. * c-common.c (handle_used_attribute): Use mark_referenced. * varasm.c (mark_referenced): Break out from ... (assemble_name): ... here. * tree.h (mark_referenced): Declare. From-SVN: r68500 --- gcc/ChangeLog | 7 +++++++ gcc/c-common.c | 6 ++++-- gcc/tree.h | 1 + gcc/varasm.c | 44 +++++++++++++++++++++++++------------------- 4 files changed, 37 insertions(+), 21 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7cab9e24c71..9d8dd82f826 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +Thu Jun 26 00:13:35 CEST 2003 Jan Hubicka + + * c-common.c (handle_used_attribute): Use mark_referenced. + * varasm.c (mark_referenced): Break out from ... + (assemble_name): ... here. + * tree.h (mark_referenced): Declare. + 2003-06-25 Wolfgang Bangerth * gccbug.in: Add PCH to list of categories. diff --git a/gcc/c-common.c b/gcc/c-common.c index 8b555a88cdd..43f9586d415 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -4812,8 +4812,10 @@ handle_used_attribute (tree *pnode, tree name, tree args ATTRIBUTE_UNUSED, if (TREE_CODE (node) == FUNCTION_DECL || (TREE_CODE (node) == VAR_DECL && TREE_STATIC (node))) - TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (node)) - = TREE_USED (node) = 1; + { + mark_referenced (DECL_ASSEMBLER_NAME (node)); + TREE_USED (node) = 1; + } else { warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); diff --git a/gcc/tree.h b/gcc/tree.h index 93065c5f2fe..e43466b5d24 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -2908,6 +2908,7 @@ extern void variable_section PARAMS ((tree, int)); enum tls_model decl_tls_model PARAMS ((tree)); enum symbol_visibility decl_visibility PARAMS ((tree)); extern void resolve_unique_section PARAMS ((tree, int, int)); +extern void mark_referenced PARAMS ((tree)); /* In stmt.c */ extern void emit_nop PARAMS ((void)); diff --git a/gcc/varasm.c b/gcc/varasm.c index c2bd4b39b65..7519138b3f6 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -1728,6 +1728,30 @@ assemble_label (name) ASM_OUTPUT_LABEL (asm_out_file, name); } +/* Set the symbol_referenced flag for ID and notify callgraph code. */ +void +mark_referenced (id) + tree id; +{ + if (!TREE_SYMBOL_REFERENCED (id)) + { + struct cgraph_node *node; + struct cgraph_varpool_node *vnode; + + if (!cgraph_global_info_ready) + { + node = cgraph_node_for_identifier (id); + if (node) + cgraph_mark_needed_node (node, 1); + } + + vnode = cgraph_varpool_node_for_identifier (id); + if (vnode) + cgraph_varpool_mark_needed_node (vnode); + } + TREE_SYMBOL_REFERENCED (id) = 1; +} + /* Output to FILE a reference to the assembler name of a C-level name NAME. If NAME starts with a *, the rest of NAME is output verbatim. Otherwise NAME is transformed in an implementation-defined way @@ -1746,25 +1770,7 @@ assemble_name (file, name) id = maybe_get_identifier (real_name); if (id) - { - if (!TREE_SYMBOL_REFERENCED (id)) - { - struct cgraph_node *node; - struct cgraph_varpool_node *vnode; - - if (!cgraph_global_info_ready) - { - node = cgraph_node_for_identifier (id); - if (node) - cgraph_mark_needed_node (node, 1); - } - - vnode = cgraph_varpool_node_for_identifier (id); - if (vnode) - cgraph_varpool_mark_needed_node (vnode); - } - TREE_SYMBOL_REFERENCED (id) = 1; - } + mark_referenced (id); if (name[0] == '*') fputs (&name[1], file); -- 2.30.2