diff options
author | Jan Hubicka <jh@suse.cz> | 2012-08-11 05:04:35 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2012-08-11 03:04:35 +0000 |
commit | 7380e6efdd990e0286da69d7b583240eccf40694 (patch) | |
tree | 9ecc46e97e1f006538b5fc2f9be799708d6b205c /gcc/lto-streamer-out.c | |
parent | 46b496e99705471904aae92d26d77158a62365a7 (diff) | |
download | gcc-7380e6efdd990e0286da69d7b583240eccf40694.zip gcc-7380e6efdd990e0286da69d7b583240eccf40694.tar.gz gcc-7380e6efdd990e0286da69d7b583240eccf40694.tar.bz2 |
cgraph.h (vector types for symtab_node): Add.
* 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.
From-SVN: r190309
Diffstat (limited to 'gcc/lto-streamer-out.c')
-rw-r--r-- | gcc/lto-streamer-out.c | 47 |
1 files changed, 28 insertions, 19 deletions
diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c index a0eac25..5a69100 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); |