aboutsummaryrefslogtreecommitdiff
path: root/gcc/lto-streamer-out.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2012-08-11 03:04:35 +0000
committerJan Hubicka <jh@suse.cz>2012-08-11 03:04:35 +0000
commit75da9d3a9b8f3088b59ee8b4566f5f23c90d093e (patch)
tree9ecc46e97e1f006538b5fc2f9be799708d6b205c /gcc/lto-streamer-out.c
parent0aa773f617bf33cede1306ad449281ca2f8f2b59 (diff)
* cgraph.h (vector types for symtab_node): Add.
* ipa-reference.c (ipa_reference_write_optimization_summary): Update for new symtab encoder. (ipa_reference_read_optimization_summary): Likewise. * lto-cgraph.c (output_varpool): Remove. (input_cgraph_opt_summary): Take symtab nodes vector as argument. (LTO_cgraph_tags): Rename to ... (LTO_symtab_tags): ... this one; add LTO_symtab_variable. (lto_cgraph_encoder_new): Rename to ... (lto_symtab_encoder_new): ... this on. (lto_cgraph_encoder_encode): Rename to ... (lto_symtab_encoder_encode): ... this one. (lto_cgraph_encoder_delete): Rename to ... (lto_symtab_encoder_delete): ... this one. (lto_cgraph_encoder_deref): Rename to ... (lto_symtab_encoder_deref): ... this one. (lto_cgraph_encoder_encode_body_p): Rename to ... (lto_symtab_encoder_encode_body_p): ... this one. (lto_varpool_encoder_new, lto_varpool_encoder_delete, lto_varpool_encoder_encode, lto_varpool_encoder_lookup, lto_varpool_encoder_deref): Remove. (lto_varpool_encoder_encode_initializer_p): Rename to ... (lto_symtab_encoder_encode_initializer_p): ... this one. (lto_set_varpool_encoder_encode_initializer): Rename to ... (lto_set_symtab_encoder_encode_initializer): ... this one. (lto_output_edge): Update. (lto_output_node): Update. (lto_output_varpool_node): Update; stream out LTO_symtab_variable tag. (lto_output_ref): Drop varpool_encoder; update. (add_node_to): Update. (add_references): Update. (output_outgoing_cgraph_edges): Update. (output_refs): Update. (compute_ltrans_boundary): Update. (output_cgraph): Update; output varpools too. (input_overwrite_node): Update. (output_varpool): Remove. (input_node): Update. (input_ref): Update. (input_edge): Update. (input_cgraph_1): Update; input varpool too; unify fixup code. (input_varpool_1): Remove. (input_refs): Update. (input_cgraph): Update. (output_node_opt_summary): Update. (input_cgraph_opt_section): Update. (input_cgraph_opt_summary): Update. * ipa-pure-const.c (pure_const_write_summary): Update. (pure_const_read_summary): Update. * lto-streamer-out.c (lto_write_tree): Update. (lto_output): Likewise. (produce_symtab): Update. (produce_asm_for_decls): Update. * ipa-inline-analysis.c (inline_read_section): Update. (inline_write_summary): Update. * ipa-prop.c (ipa_write_node_info): Update. (ipa_prop_read_section): Update. * lto-streamer.h (lto_cgraph_encoder_d): Rename to ... (lto_symtab_encoder_d): ... this one; add initializer. (lto_cgraph_encoder_t): Rename to ... (lto_symtab_encoder_t): ... this one. (lto_cgraph_encoder_size): Rename to ... (lto_symtab_encoder_size): ... this one. (lto_varpool_encoder_d): ... remove. (lto_varpool_encoder_t): Remove. (lto_out_decl_state): Remove cgraph_node_encoder, varpool_node_encoder add symtab_node_encoder. (lto_file_decl_data): Likewise. (lto_cgraph_encoder_deref, lto_cgraph_encoder_lookup, lto_cgraph_encoder_new, lto_cgraph_encoder_encode, lto_cgraph_encoder_delete, lto_cgraph_encoder_encode_body_p, lto_varpool_encoder_encode_body_p, lto_varpool_encoder_deref, lto_varpool_encoder_lookup, lto_varpool_encoder_new, lto_varpool_encoder_encode, lto_varpool_encoder_delete, lto_varpool_encoder_encode_initializer_p): Remove. (lto_symtab_encoder_deref, lto_symtab_encoder_lookup, lto_symtab_encoder_t, lto_symtab_encoder_encode, lto_symtab_encoder_delete, lto_symtab_encoder_encode_body_p, lto_symtab_encoder_encode_initializer_p): New. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@190309 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/lto-streamer-out.c')
-rw-r--r--gcc/lto-streamer-out.c47
1 files changed, 28 insertions, 19 deletions
diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c
index a0eac254c8f..5a691003a1c 100644
--- a/gcc/lto-streamer-out.c
+++ b/gcc/lto-streamer-out.c
@@ -348,13 +348,13 @@ lto_write_tree (struct output_block *ob, tree expr, bool ref_p)
&& (TREE_STATIC (expr) || DECL_EXTERNAL (expr))
&& initial)
{
- lto_varpool_encoder_t varpool_encoder;
+ lto_symtab_encoder_t encoder;
struct varpool_node *vnode;
- varpool_encoder = ob->decl_state->varpool_node_encoder;
+ encoder = ob->decl_state->symtab_node_encoder;
vnode = varpool_get_node (expr);
if (!vnode
- || !lto_varpool_encoder_encode_initializer_p (varpool_encoder,
+ || !lto_symtab_encoder_encode_initializer_p (encoder,
vnode))
initial = error_mark_node;
}
@@ -983,17 +983,20 @@ lto_output (cgraph_node_set set, varpool_node_set vset)
bitmap output = lto_bitmap_alloc ();
#endif
int i, n_nodes;
- lto_cgraph_encoder_t encoder = lto_get_out_decl_state ()->cgraph_node_encoder;
+ lto_symtab_encoder_t encoder = lto_get_out_decl_state ()->symtab_node_encoder;
/* Initialize the streamer. */
lto_streamer_init ();
- n_nodes = lto_cgraph_encoder_size (encoder);
+ n_nodes = lto_symtab_encoder_size (encoder);
/* Process only the functions with bodies. */
for (i = 0; i < n_nodes; i++)
{
- node = lto_cgraph_encoder_deref (encoder, i);
- if (lto_cgraph_encoder_encode_body_p (encoder, node)
+ symtab_node snode = lto_symtab_encoder_deref (encoder, i);
+ if (!symtab_function_p (snode))
+ continue;
+ node = cgraph (snode);
+ if (lto_symtab_encoder_encode_body_p (encoder, node)
&& !node->alias
&& !node->thunk.thunk_p)
{
@@ -1290,8 +1293,7 @@ produce_symtab (struct output_block *ob)
struct cgraph_node *node;
struct varpool_node *vnode;
struct lto_output_stream stream;
- lto_varpool_encoder_t varpool_encoder = ob->decl_state->varpool_node_encoder;
- lto_cgraph_encoder_t encoder = ob->decl_state->cgraph_node_encoder;
+ lto_symtab_encoder_t encoder = ob->decl_state->symtab_node_encoder;
int i;
lto_begin_section (section_name, false);
@@ -1303,9 +1305,11 @@ produce_symtab (struct output_block *ob)
/* Write all functions.
First write all defined functions and then write all used functions.
This is done so only to handle duplicated symbols in cgraph. */
- for (i = 0; i < lto_cgraph_encoder_size (encoder); i++)
+ for (i = 0; i < lto_symtab_encoder_size (encoder); i++)
{
- node = lto_cgraph_encoder_deref (encoder, i);
+ if (!symtab_function_p (lto_symtab_encoder_deref (encoder, i)))
+ continue;
+ node = cgraph (lto_symtab_encoder_deref (encoder, i));
if (DECL_EXTERNAL (node->symbol.decl))
continue;
if (DECL_COMDAT (node->symbol.decl)
@@ -1315,9 +1319,11 @@ produce_symtab (struct output_block *ob)
continue;
write_symbol (cache, &stream, node->symbol.decl, seen, false);
}
- for (i = 0; i < lto_cgraph_encoder_size (encoder); i++)
+ for (i = 0; i < lto_symtab_encoder_size (encoder); i++)
{
- node = lto_cgraph_encoder_deref (encoder, i);
+ if (!symtab_function_p (lto_symtab_encoder_deref (encoder, i)))
+ continue;
+ node = cgraph (lto_symtab_encoder_deref (encoder, i));
if (!DECL_EXTERNAL (node->symbol.decl))
continue;
/* We keep around unused extern inlines in order to be able to inline
@@ -1334,9 +1340,11 @@ produce_symtab (struct output_block *ob)
}
/* Write all variables. */
- for (i = 0; i < lto_varpool_encoder_size (varpool_encoder); i++)
+ for (i = 0; i < lto_symtab_encoder_size (encoder); i++)
{
- vnode = lto_varpool_encoder_deref (varpool_encoder, i);
+ if (!symtab_variable_p (lto_symtab_encoder_deref (encoder, i)))
+ continue;
+ vnode = varpool (lto_symtab_encoder_deref (encoder, i));
if (DECL_EXTERNAL (vnode->symbol.decl))
continue;
/* COMDAT virtual tables can be unshared. Do not declare them
@@ -1351,9 +1359,11 @@ produce_symtab (struct output_block *ob)
continue;
write_symbol (cache, &stream, vnode->symbol.decl, seen, false);
}
- for (i = 0; i < lto_varpool_encoder_size (varpool_encoder); i++)
+ for (i = 0; i < lto_symtab_encoder_size (encoder); i++)
{
- vnode = lto_varpool_encoder_deref (varpool_encoder, i);
+ if (!symtab_variable_p (lto_symtab_encoder_deref (encoder, i)))
+ continue;
+ vnode = varpool (lto_symtab_encoder_deref (encoder, i));
if (!DECL_EXTERNAL (vnode->symbol.decl))
continue;
if (DECL_COMDAT (vnode->symbol.decl)
@@ -1482,8 +1492,7 @@ produce_asm_for_decls (cgraph_node_set set ATTRIBUTE_UNUSED,
VEC_index (lto_out_decl_state_ptr, lto_function_decl_states, idx);
lto_delete_out_decl_state (fn_out_state);
}
- lto_cgraph_encoder_delete (ob->decl_state->cgraph_node_encoder);
- lto_varpool_encoder_delete (ob->decl_state->varpool_node_encoder);
+ lto_symtab_encoder_delete (ob->decl_state->symtab_node_encoder);
VEC_free (lto_out_decl_state_ptr, heap, lto_function_decl_states);
lto_function_decl_states = NULL;
destroy_output_block (ob);