aboutsummaryrefslogtreecommitdiff
path: root/gcc/varpool.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2012-04-30 19:55:29 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2012-04-30 17:55:29 +0000
commit65d630d474e1beedfc6a06a4857c08f2cf781d5e (patch)
treea3bcb26607a9acedb2c93c538095fba522a39176 /gcc/varpool.c
parent7edaa4d2a502c6c8e01a5c1a213834607538a30b (diff)
downloadgcc-65d630d474e1beedfc6a06a4857c08f2cf781d5e.zip
gcc-65d630d474e1beedfc6a06a4857c08f2cf781d5e.tar.gz
gcc-65d630d474e1beedfc6a06a4857c08f2cf781d5e.tar.bz2
cgraph.c (ld_plugin_symbol_resolution_names): Move to symtab.c
* cgraph.c (ld_plugin_symbol_resolution_names): Move to symtab.c (cgraph_asm_nodes, cgraph_asm_last_node): Move to cgraphunit.c (cgraph_add_to_same_comdat_group): Remove. (cgraph_add_asm_node): Move to cgraphunit.c. (cgraph_make_decl_local): Move to symtab.c (cgraph_make_node_local_1): Update. (cgraph_can_remove_if_no_direct_calls_and): Update. (used_from_object_file_p): Update. (resolution_used_from_other_file_p): Move to symtab.c (cgraph_used_from_object_file_p): move to symtab.c (verify_cgraph_node): Verify same comdat groups. * cgraph.h (cgraph_asm_node): Rename to ... (asm_node): ... this one. (cgraph_asm_nodes): Rename to ... (asm_nodes): ... this one. (symtab_add_to_same_comdat_group): New function. (symtab_dissolve_same_comdat_group_list): New function. (symtab_used_from_object_file_p): Declare. (symtab_make_decl_local): Declare. (cgraph_add_to_same_comdat_group): Remove. (cgraph_add_asm_node): Remove. (cgraph_used_from_object_file_p, varpool_used_from_object_file_p): Remove. (cgraph_finalize_compilation_unit): Rename to ... (finalize_compilation_unit): ... this one. (cgraph_optimize): Rename to .... (compile): ... this one. (add_asm_node): Declare. (fixup_same_cpp_alias_visibility): Declare. (cgraph_make_decl_local): Remove. (varpool_assemble_pending_decls): Rename to ... (varpool_output_variables): ... this one. (varpool_remove_unreferenced_decls): Remove. * ipa-inline-transform.c (clone_inlined_nodes): Dissolve comdat groups. (preserve_function_body_p): Make static. * toplev.c (compile_file): Update comments; update. * cgraphunit.c: Update comments. (cgraph_expand_all_functions): Rename to ... (expand_all_functions): ... this one; update. (cgraph_mark_functions_to_output): Rename to ... (mark_functions_to_output): ... this one; cleanup. (cgraph_output_pending_asms): Remove prototype. (asm_nodes, asm_last_node): New static vars. (cgraph_process_new_functions): Update. (cgraph_reset_node): Cleanup; add comment. (cgraph_add_new_function): Update. (cgraph_output_pending_asms): Rename to ... (output_asm_statements): ... this one. (add_asm_node): New function. (fixup_same_cpp_alias_visibility): New function based on code in cgraph_analyze_function. (cgraph_analyze_function): Use it. (cgraph_order_sort): Update. (cgraph_output_in_order): Update. (cgraph_function_versioning): Update. (cgraph_optimize): Rename to ... (compile): ... this one; initialize streamer hooks here. (cgraph_finalize_compilation_unit): Rename to ... (finalize_compilation_unit): ... this one; do not initialize streamer hook here. * lto-streamer-out.c (lto_output_toplevel_asms): Update. * dwarf2out.c: Update ocmment. * optimize.c (maybe_clone_body): Use symtab_add_to_same_comdat_group. * method.c (use_thunk): Likewise. * semantics.c (maybe_add_lambda_conv_op): Likewise. * decl2.c (maybe_emit_vtables): Likewise. (cp_write_global_declarations): Use finalize_compilation_unit. * parser.c (cp_parser_asm_definition): Use add_asm_node. * lto-streamer-in.c (lto_input_toplevel_asms): Use add_asm_node * c-decl.c (c_write_global_declarations): Use finalize_compilation_unit. * langhooks.c (write_global_declarations): Update. * ipa.c (cgraph_externally_visible_p): Update. (dissolve_same_comdat_group_list): Remove. (function_and_variable_visibility): Update. * symtab.c: Inlcude lto-streamer.h and rtl.h (ld_plugin_symbol_resolution_names): New. (symtab_add_to_same_comdat_group): New. (symtab_dissolve_same_comdat_group_list): New. (resolution_used_from_other_file_p): Move here from cgraph.c (symtab_used_from_object_file_p): New. (symtab_make_decl_local): New. * passes.c (register_pass): Update comments. * c-parser.c (c_parser_asm_definition): Update. * varpool.c (varpool_analyze_node): Use fixup_same_cpp_alias_visibility. (varpool_remove_unreferenced_decls): Make static. (varpool_assemble_pending_decls): Rename to ... (varpool_output_variables): ... this one; call varpool_remove_unreferenced_decls. (varpool_used_from_object_file_p): Remove. * gogo-tree.cc (Gogo::write_globals): Use finalize_compilation_unit. * gcc-interface/utils.c (rest_of_subprog_body_compilation): Update comment. (gnat_write_global_declarations): Use finalize_compilation_unit. * f95-lang.c (gfc_finish): Update comments. * lto.c (lto_main): Use compile (). * lto-partition.c (partition_cgraph_node_p): Use symtab_used_from_object_file_p. (partition_varpool_node_p): Likewise. From-SVN: r186998
Diffstat (limited to 'gcc/varpool.c')
-rw-r--r--gcc/varpool.c44
1 files changed, 6 insertions, 38 deletions
diff --git a/gcc/varpool.c b/gcc/varpool.c
index 75e546d..103b5b5 100644
--- a/gcc/varpool.c
+++ b/gcc/varpool.c
@@ -237,34 +237,13 @@ varpool_analyze_node (struct varpool_node *node)
}
if (!VEC_length (ipa_ref_t, node->symbol.ref_list.references))
ipa_record_reference ((symtab_node)node, (symtab_node)tgt, IPA_REF_ALIAS, NULL);
- /* C++ FE sometimes change linkage flags after producing same body aliases. */
if (node->extra_name_alias)
{
DECL_WEAK (node->symbol.decl) = DECL_WEAK (node->alias_of);
- TREE_PUBLIC (node->symbol.decl) = TREE_PUBLIC (node->alias_of);
DECL_EXTERNAL (node->symbol.decl) = DECL_EXTERNAL (node->alias_of);
DECL_VISIBILITY (node->symbol.decl) = DECL_VISIBILITY (node->alias_of);
- if (TREE_PUBLIC (node->symbol.decl))
- {
- DECL_COMDAT (node->symbol.decl) = DECL_COMDAT (node->alias_of);
- DECL_COMDAT_GROUP (node->symbol.decl) = DECL_COMDAT_GROUP (node->alias_of);
- if (DECL_ONE_ONLY (node->alias_of)
- && !node->symbol.same_comdat_group)
- {
- node->symbol.same_comdat_group = (symtab_node)tgt;
- if (!tgt->symbol.same_comdat_group)
- tgt->symbol.same_comdat_group = (symtab_node)node;
- else
- {
- symtab_node n;
- for (n = tgt->symbol.same_comdat_group;
- n->symbol.same_comdat_group != (symtab_node)tgt;
- n = n->symbol.same_comdat_group)
- ;
- n->symbol.same_comdat_group = (symtab_node)node;
- }
- }
- }
+ fixup_same_cpp_alias_visibility ((symtab_node) node,
+ (symtab_node) tgt, node->alias_of);
}
}
else if (DECL_INITIAL (decl))
@@ -331,7 +310,7 @@ enqueue_node (struct varpool_node *node, struct varpool_node **first)
reachability starting from variables that are either externally visible
or was referred from the asm output routines. */
-void
+static void
varpool_remove_unreferenced_decls (void)
{
struct varpool_node *next, *node;
@@ -413,7 +392,7 @@ varpool_finalize_named_section_flags (struct varpool_node *node)
/* Output all variables enqueued to be assembled. */
bool
-varpool_assemble_pending_decls (void)
+varpool_output_variables (void)
{
bool changed = false;
struct varpool_node *node;
@@ -421,6 +400,8 @@ varpool_assemble_pending_decls (void)
if (seen_error ())
return false;
+ varpool_remove_unreferenced_decls ();
+
timevar_push (TV_VAROUT);
FOR_EACH_DEFINED_VARIABLE (node)
@@ -501,19 +482,6 @@ varpool_extra_name_alias (tree alias, tree decl)
return alias_node;
}
-/* Return true when NODE is known to be used from other (non-LTO) object file.
- Known only when doing LTO via linker plugin. */
-
-bool
-varpool_used_from_object_file_p (struct varpool_node *node)
-{
- if (!TREE_PUBLIC (node->symbol.decl))
- return false;
- if (resolution_used_from_other_file_p (node->symbol.resolution))
- return true;
- return false;
-}
-
/* Call calback on NODE and aliases asociated to NODE.
When INCLUDE_OVERWRITABLE is false, overwritable aliases and thunks are
skipped. */