aboutsummaryrefslogtreecommitdiff
path: root/gcc/lto-cgraph.c
diff options
context:
space:
mode:
authorjamborm <jamborm@138bc75d-0d04-0410-961f-82ee72b054a4>2012-11-07 09:28:50 +0000
committerjamborm <jamborm@138bc75d-0d04-0410-961f-82ee72b054a4>2012-11-07 09:28:50 +0000
commitb9e2d290858263a59c2cf1a187b642635ea281c2 (patch)
tree24551fd105d77f516e3d5fcefd5bfac9a162315d /gcc/lto-cgraph.c
parent563fae60c3bb55c2d717f710eec508ecaf1f7750 (diff)
2012-11-07 Martin Jambor <mjambor@suse.cz>
* lto-cgraph.c: Include tree-pass.h. (lto_output_node): Stream node->ipa_transforms_to_apply. (input_node): Likewise. * tree-pass.h (passes_by_id): Declare. (passes_by_id_size): Likewise. * Makefile.in (lto-cgraph.o): Add TREE_PASS_H to dependencies. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193286 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/lto-cgraph.c')
-rw-r--r--gcc/lto-cgraph.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/gcc/lto-cgraph.c b/gcc/lto-cgraph.c
index e8f171824a1..b52a8e3a55c 100644
--- a/gcc/lto-cgraph.c
+++ b/gcc/lto-cgraph.c
@@ -45,6 +45,7 @@ along with GCC; see the file COPYING3. If not see
#include "data-streamer.h"
#include "tree-streamer.h"
#include "gcov-io.h"
+#include "tree-pass.h"
static void output_cgraph_opt_summary (void);
static void input_cgraph_opt_summary (VEC (symtab_node, heap) * nodes);
@@ -377,6 +378,8 @@ lto_output_node (struct lto_simple_output_block *ob, struct cgraph_node *node,
intptr_t ref;
bool in_other_partition = false;
struct cgraph_node *clone_of;
+ struct ipa_opt_pass_d *pass;
+ int i;
boundary_p = !lto_symtab_encoder_in_partition_p (encoder, (symtab_node)node);
@@ -432,6 +435,12 @@ lto_output_node (struct lto_simple_output_block *ob, struct cgraph_node *node,
streamer_write_hwi_stream (ob->main_stream, node->count);
streamer_write_hwi_stream (ob->main_stream, node->count_materialization_scale);
+ streamer_write_hwi_stream (ob->main_stream,
+ VEC_length (ipa_opt_pass,
+ node->ipa_transforms_to_apply));
+ FOR_EACH_VEC_ELT (ipa_opt_pass, node->ipa_transforms_to_apply, i, pass)
+ streamer_write_hwi_stream (ob->main_stream, pass->pass.static_pass_number);
+
if (tag == LTO_symtab_analyzed_node)
{
if (node->global.inlined_to)
@@ -897,6 +906,7 @@ input_node (struct lto_file_decl_data *file_data,
int ref = LCC_NOT_FOUND, ref2 = LCC_NOT_FOUND;
int clone_ref;
int order;
+ int i, count;
order = streamer_read_hwi (ib) + order_base;
clone_ref = streamer_read_hwi (ib);
@@ -919,6 +929,19 @@ input_node (struct lto_file_decl_data *file_data,
node->count = streamer_read_hwi (ib);
node->count_materialization_scale = streamer_read_hwi (ib);
+ count = streamer_read_hwi (ib);
+ node->ipa_transforms_to_apply = NULL;
+ for (i = 0; i < count; i++)
+ {
+ struct opt_pass *pass;
+ int pid = streamer_read_hwi (ib);
+
+ gcc_assert (pid < passes_by_id_size);
+ pass = passes_by_id[pid];
+ VEC_safe_push (ipa_opt_pass, heap, node->ipa_transforms_to_apply,
+ (struct ipa_opt_pass_d *) pass);
+ }
+
if (tag == LTO_symtab_analyzed_node)
ref = streamer_read_hwi (ib);