diff options
-rw-r--r-- | gcc/lto-cgraph.cc | 10 | ||||
-rw-r--r-- | gcc/lto-streamer-out.cc | 3 | ||||
-rw-r--r-- | gcc/lto-streamer.h | 3 | ||||
-rw-r--r-- | gcc/lto/lto.cc | 2 | ||||
-rw-r--r-- | gcc/passes.cc | 11 | ||||
-rw-r--r-- | gcc/tree-pass.h | 3 |
6 files changed, 16 insertions, 16 deletions
diff --git a/gcc/lto-cgraph.cc b/gcc/lto-cgraph.cc index 6395033..1492409 100644 --- a/gcc/lto-cgraph.cc +++ b/gcc/lto-cgraph.cc @@ -1139,16 +1139,6 @@ output_offload_tables (void) streamer_write_uhwi_stream (ob->main_stream, 0); lto_destroy_simple_output_block (ob); - - /* In WHOPR mode during the WPA stage the joint offload tables need to be - streamed to one partition only. That's why we free offload_funcs and - offload_vars after the first call of output_offload_tables. */ - if (flag_wpa) - { - vec_free (offload_funcs); - vec_free (offload_vars); - vec_free (offload_ind_funcs); - } } /* Verify the partitioning of NODE. */ diff --git a/gcc/lto-streamer-out.cc b/gcc/lto-streamer-out.cc index 523d6da..a4b1713 100644 --- a/gcc/lto-streamer-out.cc +++ b/gcc/lto-streamer-out.cc @@ -2829,7 +2829,8 @@ lto_output (void) statements using the statement UIDs. */ output_symtab (); - output_offload_tables (); + if (lto_get_out_decl_state ()->output_offload_tables_p) + output_offload_tables (); if (flag_checking) { diff --git a/gcc/lto-streamer.h b/gcc/lto-streamer.h index 79c44d2..4da1a3e 100644 --- a/gcc/lto-streamer.h +++ b/gcc/lto-streamer.h @@ -531,6 +531,9 @@ struct lto_out_decl_state /* True if decl state is compressed. */ bool compressed; + + /* True if offload tables should be output. */ + bool output_offload_tables_p; }; typedef struct lto_out_decl_state *lto_out_decl_state_ptr; diff --git a/gcc/lto/lto.cc b/gcc/lto/lto.cc index 52dd436..1ee215d 100644 --- a/gcc/lto/lto.cc +++ b/gcc/lto/lto.cc @@ -178,7 +178,7 @@ stream_out (char *temp_filename, lto_symtab_encoder_t encoder, int part) gcc_assert (!dump_file); streamer_dump_file = dump_begin (TDI_lto_stream_out, NULL, part); - ipa_write_optimization_summaries (encoder); + ipa_write_optimization_summaries (encoder, part == 0); free (CONST_CAST (char *, file->filename)); diff --git a/gcc/passes.cc b/gcc/passes.cc index d73f8ba..057850f 100644 --- a/gcc/passes.cc +++ b/gcc/passes.cc @@ -2829,11 +2829,13 @@ ipa_write_summaries_2 (opt_pass *pass, struct lto_out_decl_state *state) summaries. SET is the set of nodes to be written. */ static void -ipa_write_summaries_1 (lto_symtab_encoder_t encoder) +ipa_write_summaries_1 (lto_symtab_encoder_t encoder, + bool output_offload_tables_p) { pass_manager *passes = g->get_passes (); struct lto_out_decl_state *state = lto_new_out_decl_state (); state->symtab_node_encoder = encoder; + state->output_offload_tables_p = output_offload_tables_p; lto_output_init_mode_table (); lto_push_out_decl_state (state); @@ -2897,7 +2899,8 @@ ipa_write_summaries (void) if (vnode->need_lto_streaming) lto_set_symtab_encoder_in_partition (encoder, vnode); - ipa_write_summaries_1 (compute_ltrans_boundary (encoder)); + ipa_write_summaries_1 (compute_ltrans_boundary (encoder), + flag_generate_offload); free (order); if (streamer_dump_file) @@ -2952,10 +2955,12 @@ ipa_write_optimization_summaries_1 (opt_pass *pass, NULL, write out all summaries of all nodes. */ void -ipa_write_optimization_summaries (lto_symtab_encoder_t encoder) +ipa_write_optimization_summaries (lto_symtab_encoder_t encoder, + bool output_offload_tables_p) { struct lto_out_decl_state *state = lto_new_out_decl_state (); state->symtab_node_encoder = encoder; + state->output_offload_tables_p = output_offload_tables_p; lto_output_init_mode_table (); lto_push_out_decl_state (state); diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h index 3a0cf13..a928cbe 100644 --- a/gcc/tree-pass.h +++ b/gcc/tree-pass.h @@ -684,7 +684,8 @@ extern void emergency_dump_function (void); extern void print_current_pass (FILE *); extern void debug_pass (void); extern void ipa_write_summaries (void); -extern void ipa_write_optimization_summaries (struct lto_symtab_encoder_d *); +extern void ipa_write_optimization_summaries (struct lto_symtab_encoder_d *, + bool); extern void ipa_read_summaries (void); extern void ipa_read_optimization_summaries (void); extern void register_one_dump_file (opt_pass *); |