diff options
author | Richard Biener <rguenther@suse.de> | 2015-08-31 11:47:30 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2015-08-31 11:47:30 +0000 |
commit | 6c1bc27c5f1052e363e69fcabee45ef44d4bdde5 (patch) | |
tree | 72db555178b725e356d6e13b9f21e6cedd48abd2 /gcc | |
parent | c25eec8ffd8605d473192faec7ef11b9abf7a10b (diff) | |
download | gcc-6c1bc27c5f1052e363e69fcabee45ef44d4bdde5.zip gcc-6c1bc27c5f1052e363e69fcabee45ef44d4bdde5.tar.gz gcc-6c1bc27c5f1052e363e69fcabee45ef44d4bdde5.tar.bz2 |
lto-streamer.h (lto_location_cache::cached_location::sysp): Add.
2015-08-31 Richard Biener <rguenther@suse.de>
* lto-streamer.h (lto_location_cache::cached_location::sysp): Add.
(lto_location_cache::current_sysp): Likewise.
(output_block::current_sysp): Likewise.
* lto-streamer-in.c (lto_location_cache::cmp_loc): Compare sysp.
(lto_location_cache::apply_location_cache): Properly record
system header locations.
(lto_location_cache::input_location): Input whether a file
is a system header.
* lto-streamer-out.c (lto_output_location): Stream whether a file
is a system header.
From-SVN: r227338
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 13 | ||||
-rw-r--r-- | gcc/lto-streamer-in.c | 15 | ||||
-rw-r--r-- | gcc/lto-streamer-out.c | 6 | ||||
-rw-r--r-- | gcc/lto-streamer.h | 3 |
4 files changed, 32 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 88ccb22..deda8a4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,16 @@ +2015-08-31 Richard Biener <rguenther@suse.de> + + * lto-streamer.h (lto_location_cache::cached_location::sysp): Add. + (lto_location_cache::current_sysp): Likewise. + (output_block::current_sysp): Likewise. + * lto-streamer-in.c (lto_location_cache::cmp_loc): Compare sysp. + (lto_location_cache::apply_location_cache): Properly record + system header locations. + (lto_location_cache::input_location): Input whether a file + is a system header. + * lto-streamer-out.c (lto_output_location): Stream whether a file + is a system header. + 2015-08-31 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> PR bootstrap/67363 diff --git a/gcc/lto-streamer-in.c b/gcc/lto-streamer-in.c index 2eb8051..07018ec 100644 --- a/gcc/lto-streamer-in.c +++ b/gcc/lto-streamer-in.c @@ -171,6 +171,8 @@ lto_location_cache::cmp_loc (const void *pa, const void *pb) } if (a->file != b->file) return strcmp (a->file, b->file); + if (a->sysp != b->sysp) + return a->sysp ? 1 : -1; if (a->line != b->line) return a->line - b->line; return a->col - b->col; @@ -194,7 +196,7 @@ lto_location_cache::apply_location_cache () if (current_file != loc.file) linemap_add (line_table, prev_file ? LC_RENAME : LC_ENTER, - false, loc.file, loc.line); + loc.sysp, loc.file, loc.line); else if (current_line != loc.line) { int max = loc.col; @@ -251,6 +253,7 @@ lto_location_cache::input_location (location_t *loc, struct bitpack_d *bp, static const char *stream_file; static int stream_line; static int stream_col; + static bool stream_sysp; bool file_change, line_change, column_change; gcc_assert (current_cache == this); @@ -268,7 +271,10 @@ lto_location_cache::input_location (location_t *loc, struct bitpack_d *bp, column_change = bp_unpack_value (bp, 1); if (file_change) - stream_file = canon_file_name (bp_unpack_string (data_in, bp)); + { + stream_file = canon_file_name (bp_unpack_string (data_in, bp)); + stream_sysp = bp_unpack_value (bp, 1); + } if (line_change) stream_line = bp_unpack_var_len_unsigned (bp); @@ -280,13 +286,14 @@ lto_location_cache::input_location (location_t *loc, struct bitpack_d *bp, streaming. */ if (current_file == stream_file && current_line == stream_line - && current_col == stream_col) + && current_col == stream_col && current_sysp == stream_sysp) { *loc = current_loc; return; } - struct cached_location entry = {stream_file, loc, stream_line, stream_col}; + struct cached_location entry + = {stream_file, loc, stream_line, stream_col, stream_sysp}; loc_cache.safe_push (entry); } diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c index 3ca8855..b6bc515 100644 --- a/gcc/lto-streamer-out.c +++ b/gcc/lto-streamer-out.c @@ -191,8 +191,12 @@ lto_output_location (struct output_block *ob, struct bitpack_d *bp, bp_pack_value (bp, ob->current_col != xloc.column, 1); if (ob->current_file != xloc.file) - bp_pack_string (ob, bp, xloc.file, true); + { + bp_pack_string (ob, bp, xloc.file, true); + bp_pack_value (bp, xloc.sysp, 1); + } ob->current_file = xloc.file; + ob->current_sysp = xloc.sysp; if (ob->current_line != xloc.line) bp_pack_var_len_unsigned (bp, xloc.line); diff --git a/gcc/lto-streamer.h b/gcc/lto-streamer.h index 66a824e..21c41c5 100644 --- a/gcc/lto-streamer.h +++ b/gcc/lto-streamer.h @@ -345,6 +345,7 @@ private: const char *file; location_t *loc; int line, col; + bool sysp; }; /* The location cache. */ @@ -364,6 +365,7 @@ private: const char *current_file; int current_line; int current_col; + bool current_sysp; location_t current_loc; }; @@ -711,6 +713,7 @@ struct output_block const char *current_file; int current_line; int current_col; + bool current_sysp; /* Cache of nodes written in this section. */ struct streamer_tree_cache_d *writer_cache; |