From 6ab601efaa82b47e0ea1d3c4b14e052b07c79280 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Wed, 26 Jun 2019 11:09:51 +0000 Subject: [PATCH] lto-streamer.h (lto_bitmap_alloc): Remove. 2019-06-26 Richard Biener * lto-streamer.h (lto_bitmap_alloc): Remove. (lto_bitmap_free): Likewise. * lto-streamer.c (lto_bitmap_alloc): Remove. (lto_bitmap_free): Likewise. (lto_obstack): Likewise. (lto_obstack_initialized): Likewise. * lto-streamer-out.c (lto_output): Use own obstack for local bitmap, free it consistently. From-SVN: r272687 --- gcc/ChangeLog | 11 +++++++++++ gcc/lto-streamer-out.c | 24 ++++++++++++------------ gcc/lto-streamer.c | 27 --------------------------- gcc/lto-streamer.h | 2 -- 4 files changed, 23 insertions(+), 41 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bd65d2a3a43..3f4576fcefb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2019-06-26 Richard Biener + + * lto-streamer.h (lto_bitmap_alloc): Remove. + (lto_bitmap_free): Likewise. + * lto-streamer.c (lto_bitmap_alloc): Remove. + (lto_bitmap_free): Likewise. + (lto_obstack): Likewise. + (lto_obstack_initialized): Likewise. + * lto-streamer-out.c (lto_output): Use own obstack for local + bitmap, free it consistently. + 2019-06-26 Jakub Jelinek PR target/90991 diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c index 294771d4ba8..dc68429303c 100644 --- a/gcc/lto-streamer-out.c +++ b/gcc/lto-streamer-out.c @@ -2397,13 +2397,17 @@ lto_output (void) { struct lto_out_decl_state *decl_state; bitmap output = NULL; + bitmap_obstack output_obstack; int i, n_nodes; lto_symtab_encoder_t encoder = lto_get_out_decl_state ()->symtab_node_encoder; prune_offload_funcs (); if (flag_checking) - output = lto_bitmap_alloc (); + { + bitmap_obstack_initialize (&output_obstack); + output = BITMAP_ALLOC (&output_obstack); + } /* Initialize the streamer. */ lto_streamer_init (); @@ -2419,10 +2423,7 @@ lto_output (void) && !node->alias) { if (flag_checking) - { - gcc_assert (!bitmap_bit_p (output, DECL_UID (node->decl))); - bitmap_set_bit (output, DECL_UID (node->decl)); - } + gcc_assert (bitmap_set_bit (output, DECL_UID (node->decl))); decl_state = lto_new_out_decl_state (); lto_push_out_decl_state (decl_state); if (gimple_has_body_p (node->decl) @@ -2452,10 +2453,7 @@ lto_output (void) { timevar_push (TV_IPA_LTO_CTORS_OUT); if (flag_checking) - { - gcc_assert (!bitmap_bit_p (output, DECL_UID (node->decl))); - bitmap_set_bit (output, DECL_UID (node->decl)); - } + gcc_assert (bitmap_set_bit (output, DECL_UID (node->decl))); decl_state = lto_new_out_decl_state (); lto_push_out_decl_state (decl_state); if (DECL_INITIAL (node->decl) != error_mark_node @@ -2480,9 +2478,11 @@ lto_output (void) output_offload_tables (); -#if CHECKING_P - lto_bitmap_free (output); -#endif + if (flag_checking) + { + BITMAP_FREE (output); + bitmap_obstack_release (&output_obstack); + } } /* Write each node in encoded by ENCODER to OB, as well as those reachable diff --git a/gcc/lto-streamer.c b/gcc/lto-streamer.c index 7852ffc66b9..bd0126faebb 100644 --- a/gcc/lto-streamer.c +++ b/gcc/lto-streamer.c @@ -35,11 +35,6 @@ along with GCC; see the file COPYING3. If not see /* Statistics gathered during LTO, WPA and LTRANS. */ struct lto_stats_d lto_stats; -/* LTO uses bitmaps with different life-times. So use a separate - obstack for all LTO bitmaps. */ -static bitmap_obstack lto_obstack; -static bool lto_obstack_initialized; - const char *section_name_prefix = LTO_SECTION_NAME_PREFIX; /* Set when streaming LTO for offloading compiler. */ bool lto_stream_offload_p; @@ -113,28 +108,6 @@ lto_tag_name (enum LTO_tags tag) } -/* Allocate a bitmap from heap. Initializes the LTO obstack if necessary. */ - -bitmap -lto_bitmap_alloc (void) -{ - if (!lto_obstack_initialized) - { - bitmap_obstack_initialize (<o_obstack); - lto_obstack_initialized = true; - } - return BITMAP_ALLOC (<o_obstack); -} - -/* Free bitmap B. */ - -void -lto_bitmap_free (bitmap b) -{ - BITMAP_FREE (b); -} - - /* Get a section name for a particular type or name. The NAME field is only used if SECTION_TYPE is LTO_section_function_body. For all others it is ignored. The callee of this function is responsible diff --git a/gcc/lto-streamer.h b/gcc/lto-streamer.h index d087cba9bf0..3b1e07b4bfc 100644 --- a/gcc/lto-streamer.h +++ b/gcc/lto-streamer.h @@ -822,8 +822,6 @@ extern void lto_append_block (struct lto_output_stream *); extern bool lto_stream_offload_p; extern const char *lto_tag_name (enum LTO_tags); -extern bitmap lto_bitmap_alloc (void); -extern void lto_bitmap_free (bitmap); extern char *lto_get_section_name (int, const char *, struct lto_file_decl_data *); extern void print_lto_report (const char *); extern void lto_streamer_init (void); -- 2.30.2