diff options
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/lto-streamer-out.c | 5 | ||||
-rw-r--r-- | gcc/lto-streamer.h | 3 | ||||
-rw-r--r-- | gcc/tree-streamer-in.c | 21 | ||||
-rw-r--r-- | gcc/tree-streamer-out.c | 3 |
5 files changed, 31 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d584459..a83cc4b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2020-05-25 Jan Hubicka <hubicka@ucw.cz> + + * lto-streamer-out.c (lto_output_tree): Add streamer_debugging check. + * lto-streamer.h (streamer_debugging): New constant + * tree-streamer-in.c (streamer_read_tree_bitfields): Add + streamer_debugging check. + (streamer_get_pickled_tree): Likewise. + * tree-streamer-out.c (pack_ts_base_value_fields): Likewise. + 2020-05-25 Richard Biener <rguenther@suse.de> PR tree-optimization/95308 diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c index 887a51d..288e3c0 100644 --- a/gcc/lto-streamer-out.c +++ b/gcc/lto-streamer-out.c @@ -1748,8 +1748,9 @@ lto_output_tree (struct output_block *ob, tree expr, will instantiate two different nodes for the same object. */ streamer_write_record_start (ob, LTO_tree_pickle_reference); streamer_write_uhwi (ob, ix); - streamer_write_enum (ob->main_stream, LTO_tags, LTO_NUM_TAGS, - lto_tree_code_to_tag (TREE_CODE (expr))); + if (streamer_debugging) + streamer_write_enum (ob->main_stream, LTO_tags, LTO_NUM_TAGS, + lto_tree_code_to_tag (TREE_CODE (expr))); lto_stats.num_pickle_refs_output++; } else diff --git a/gcc/lto-streamer.h b/gcc/lto-streamer.h index a466fb8..93da3c6 100644 --- a/gcc/lto-streamer.h +++ b/gcc/lto-streamer.h @@ -125,6 +125,9 @@ along with GCC; see the file COPYING3. If not see typedef unsigned char lto_decl_flags_t; +/* Stream additional data to LTO object files to make it easier to debug + streaming code. This changes object files. */ +static const bool streamer_debugging = false; /* Tags representing the various IL objects written to the bytecode file (GIMPLE statements, basic blocks, EH regions, tree nodes, etc). diff --git a/gcc/tree-streamer-in.c b/gcc/tree-streamer-in.c index 450f40d..d2e45e3 100644 --- a/gcc/tree-streamer-in.c +++ b/gcc/tree-streamer-in.c @@ -487,9 +487,13 @@ streamer_read_tree_bitfields (class lto_input_block *ib, /* The first word in BP contains the code of the tree that we are about to read. */ - code = (enum tree_code) bp_unpack_value (&bp, 16); - lto_tag_check (lto_tree_code_to_tag (code), - lto_tree_code_to_tag (TREE_CODE (expr))); + if (streamer_debugging) + { + code = (enum tree_code) bp_unpack_value (&bp, 16); + lto_tag_check (lto_tree_code_to_tag (code), + lto_tree_code_to_tag (TREE_CODE (expr))); + } + code = TREE_CODE (expr); /* Note that all these functions are highly sensitive to changes in the types and sizes of each of the fields being packed. */ @@ -1107,11 +1111,14 @@ streamer_get_pickled_tree (class lto_input_block *ib, class data_in *data_in) enum LTO_tags expected_tag; ix = streamer_read_uhwi (ib); - expected_tag = streamer_read_enum (ib, LTO_tags, LTO_NUM_TAGS); - result = streamer_tree_cache_get_tree (data_in->reader_cache, ix); - gcc_assert (result - && TREE_CODE (result) == lto_tag_to_tree_code (expected_tag)); + + if (streamer_debugging) + { + expected_tag = streamer_read_enum (ib, LTO_tags, LTO_NUM_TAGS); + gcc_assert (result + && TREE_CODE (result) == lto_tag_to_tree_code (expected_tag)); + } return result; } diff --git a/gcc/tree-streamer-out.c b/gcc/tree-streamer-out.c index 4e8a12c..94635c4 100644 --- a/gcc/tree-streamer-out.c +++ b/gcc/tree-streamer-out.c @@ -71,7 +71,8 @@ write_identifier (struct output_block *ob, static inline void pack_ts_base_value_fields (struct bitpack_d *bp, tree expr) { - bp_pack_value (bp, TREE_CODE (expr), 16); + if (streamer_debugging) + bp_pack_value (bp, TREE_CODE (expr), 16); if (!TYPE_P (expr)) { bp_pack_value (bp, TREE_SIDE_EFFECTS (expr), 1); |