diff options
author | Richard Guenther <rguenther@suse.de> | 2012-10-04 11:23:18 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2012-10-04 11:23:18 +0000 |
commit | 5c1eb617e427a417dd7e1f79eee15b38362dbf53 (patch) | |
tree | 8bbabc4c74321f88facd411646c5cf2e47605c23 /gcc/tree-streamer-in.c | |
parent | 9cb62ce3c795fe9991d20a294a53c1bbeadf2751 (diff) | |
download | gcc-5c1eb617e427a417dd7e1f79eee15b38362dbf53.zip gcc-5c1eb617e427a417dd7e1f79eee15b38362dbf53.tar.gz gcc-5c1eb617e427a417dd7e1f79eee15b38362dbf53.tar.bz2 |
re PR lto/47788 (New LTO failures)
2012-10-04 Richard Guenther <rguenther@suse.de>
PR lto/47788
* tree-streamer-out.c (write_ts_block_tree_pointers): For
inlined functions outer scopes write the ultimate origin
as BLOCK_ABSTRACT_ORIGIN and BLOCK_SOURCE_LOCATION.
Do not stream the fragment chains.
* tree-streamer-in.c (lto_input_ts_block_tree_pointers): Likewise.
* dwarf2out.c (gen_subprogram_die): Handle NULL DECL_INITIAL.
(dwarf2out_decl): Always output DECL_ABSTRACT function decls.
From-SVN: r192075
Diffstat (limited to 'gcc/tree-streamer-in.c')
-rw-r--r-- | gcc/tree-streamer-in.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/gcc/tree-streamer-in.c b/gcc/tree-streamer-in.c index 73a81c9..fc69845 100644 --- a/gcc/tree-streamer-in.c +++ b/gcc/tree-streamer-in.c @@ -792,22 +792,22 @@ static void lto_input_ts_block_tree_pointers (struct lto_input_block *ib, struct data_in *data_in, tree expr) { - /* Do not stream BLOCK_SOURCE_LOCATION. We cannot handle debug information - for early inlining so drop it on the floor instead of ICEing in - dwarf2out.c. */ BLOCK_VARS (expr) = streamer_read_chain (ib, data_in); - /* Do not stream BLOCK_NONLOCALIZED_VARS. We cannot handle debug information - for early inlining so drop it on the floor instead of ICEing in - dwarf2out.c. */ - BLOCK_SUPERCONTEXT (expr) = stream_read_tree (ib, data_in); - /* Do not stream BLOCK_ABSTRACT_ORIGIN. We cannot handle debug information - for early inlining so drop it on the floor instead of ICEing in + /* Stream BLOCK_ABSTRACT_ORIGIN and BLOCK_SOURCE_LOCATION for + the limited cases we can handle - those that represent inlined + function scopes. For the rest them on the floor instead of ICEing in dwarf2out.c. */ - BLOCK_FRAGMENT_ORIGIN (expr) = stream_read_tree (ib, data_in); - BLOCK_FRAGMENT_CHAIN (expr) = stream_read_tree (ib, data_in); + BLOCK_ABSTRACT_ORIGIN (expr) = stream_read_tree (ib, data_in); + BLOCK_SOURCE_LOCATION (expr) = lto_input_location (ib, data_in); + /* Do not stream BLOCK_NONLOCALIZED_VARS. We cannot handle debug information + for early inlined BLOCKs so drop it on the floor instead of ICEing in + dwarf2out.c. */ + + /* BLOCK_FRAGMENT_ORIGIN and BLOCK_FRAGMENT_CHAIN is not live at LTO + streaming time. */ /* We re-compute BLOCK_SUBBLOCKS of our parent here instead of streaming it. For non-BLOCK BLOCK_SUPERCONTEXTs we still |