Commit f1395d4a by Jan Hubicka Committed by Jan Hubicka

lto-cgraph.c (lto_output_edge): Use gimple_has_body_p instead of flag_wpa.


	* lto-cgraph.c (lto_output_edge): Use gimple_has_body_p instead of flag_wpa.
	* lto-streamer-out.c (lto_output): Likewise.
	* passes.c (ipa_write_optimization_summaries): Initialize statement uids.
	
	* lto.c (lto_1_to_1_map): Be prepared for node to have no file data.
	(lto_wpa_write_files): Update comments.

From-SVN: r163438
parent 12523de0
2010-08-20 Jan Hubicka <jh@suse.cz>
* lto-cgraph.c (lto_output_edge): Use gimple_has_body_p instead of flag_wpa.
* lto-streamer-out.c (lto_output): Likewise.
* passes.c (ipa_write_optimization_summaries): Initialize statement uids.
2010-08-20 Olivier Hainque <hainque@adacore.com>
* tree.h (alias_diag_flags): New enum.
......
......@@ -281,7 +281,8 @@ lto_output_edge (struct lto_simple_output_block *ob, struct cgraph_edge *edge,
lto_output_sleb128_stream (ob->main_stream, edge->count);
bp = bitpack_create (ob->main_stream);
uid = flag_wpa ? edge->lto_stmt_uid : gimple_uid (edge->call_stmt);
uid = (!gimple_has_body_p (edge->caller->decl)
? edge->lto_stmt_uid : gimple_uid (edge->call_stmt));
bp_pack_value (&bp, uid, HOST_BITS_PER_INT);
bp_pack_value (&bp, edge->inline_failed, HOST_BITS_PER_INT);
bp_pack_value (&bp, edge->frequency, HOST_BITS_PER_INT);
......
......@@ -2122,7 +2122,7 @@ lto_output (cgraph_node_set set, varpool_node_set vset)
#endif
decl_state = lto_new_out_decl_state ();
lto_push_out_decl_state (decl_state);
if (!flag_wpa)
if (gimple_has_body_p (node->decl))
output_function (node);
else
copy_function (node);
......
2010-08-20 Jan Hubicka <jh@suse.cz>
* lto.c (lto_1_to_1_map): Be prepared for node to have no file data.
(lto_wpa_write_files): Update comments.
2010-08-20 H.J. Lu <hongjiu.lu@intel.com>
PR bootstrap/45357
......
......@@ -835,8 +835,10 @@ lto_1_to_1_map (void)
continue;
file_data = node->local.lto_file_data;
gcc_assert (!node->same_body_alias && file_data);
gcc_assert (!node->same_body_alias);
if (file_data)
{
slot = pointer_map_contains (pmap, file_data);
if (slot)
partition = (ltrans_partition) *slot;
......@@ -847,6 +849,17 @@ lto_1_to_1_map (void)
*slot = partition;
npartitions++;
}
}
else if (!file_data
&& VEC_length (ltrans_partition, ltrans_partitions))
partition = VEC_index (ltrans_partition, ltrans_partitions, 0);
else
{
partition = new_partition ("");
slot = pointer_map_insert (pmap, NULL);
*slot = partition;
npartitions++;
}
add_cgraph_node_to_partition (partition, node);
}
......@@ -1089,16 +1102,13 @@ lto_wpa_write_files (void)
timevar_push (TV_WHOPR_WPA);
/* Include all inlined functions and determine what sets need to be
compiled by LTRANS. After this loop, only those sets that
contain callgraph nodes from more than one file will need to be
compiled by LTRANS. */
FOR_EACH_VEC_ELT (ltrans_partition, ltrans_partitions, i, part)
lto_stats.num_output_cgraph_nodes += VEC_length (cgraph_node_ptr,
part->cgraph_set->nodes);
/* After adding all inlinees, find out statics that need to be promoted
to globals because of cross-file inlining. */
/* Find out statics that need to be promoted
to globals with hidden visibility because they are accessed from multiple
partitions. */
lto_promote_cross_file_statics ();
timevar_pop (TV_WHOPR_WPA);
......
......@@ -1792,9 +1792,26 @@ void
ipa_write_optimization_summaries (cgraph_node_set set, varpool_node_set vset)
{
struct lto_out_decl_state *state = lto_new_out_decl_state ();
cgraph_node_set_iterator csi;
compute_ltrans_boundary (state, set, vset);
lto_push_out_decl_state (state);
for (csi = csi_start (set); !csi_end_p (csi); csi_next (&csi))
{
struct cgraph_node *node = csi_node (csi);
/* When streaming out references to statements as part of some IPA
pass summary, the statements need to have uids assigned.
For functions newly born at WPA stage we need to initialize
the uids here. */
if (node->analyzed
&& gimple_has_body_p (node->decl))
{
push_cfun (DECL_STRUCT_FUNCTION (node->decl));
renumber_gimple_stmt_uids ();
pop_cfun ();
}
}
gcc_assert (flag_wpa);
ipa_write_optimization_summaries_1 (all_regular_ipa_passes, set, vset, state);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment