aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-streamer-out.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2016-07-19 07:35:05 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2016-07-19 07:35:05 +0000
commitf6918a8b63ad38e475c23e26df0f3c4f7faad6cb (patch)
tree86e909d0bffa0cac2e977c91deff79aa37da2526 /gcc/tree-streamer-out.c
parenta8f7a89526b5fb1b17a6972b943fcbd8c4d0475a (diff)
downloadgcc-f6918a8b63ad38e475c23e26df0f3c4f7faad6cb.zip
gcc-f6918a8b63ad38e475c23e26df0f3c4f7faad6cb.tar.gz
gcc-f6918a8b63ad38e475c23e26df0f3c4f7faad6cb.tar.bz2
re PR middle-end/71907 (missing buffer overflow warnings with -flto)
2016-07-19 Richard Biener <rguenther@suse.de> PR lto/71907 * lto-streamer-out.c (DFS::DFS_write_tree_body): For blocks with an abstract origin that is not an inlined function outer scope add a self-reference as abstract origin. * tree-streamer-out.c (write_ts_block_tree_pointers): Likewise. From-SVN: r238456
Diffstat (limited to 'gcc/tree-streamer-out.c')
-rw-r--r--gcc/tree-streamer-out.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/tree-streamer-out.c b/gcc/tree-streamer-out.c
index c37755d..a70666b 100644
--- a/gcc/tree-streamer-out.c
+++ b/gcc/tree-streamer-out.c
@@ -807,14 +807,17 @@ write_ts_block_tree_pointers (struct output_block *ob, tree expr, bool ref_p)
/* Stream BLOCK_ABSTRACT_ORIGIN 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. */
+ For the rest them on the floor instead of ICEing in dwarf2out.c, but
+ keep the notion of whether the block is an inlined block by refering
+ to itself for the sake of tree_nonartificial_location. */
if (inlined_function_outer_scope_p (expr))
{
tree ultimate_origin = block_ultimate_origin (expr);
stream_write_tree (ob, ultimate_origin, ref_p);
}
else
- stream_write_tree (ob, NULL_TREE, ref_p);
+ stream_write_tree (ob, (BLOCK_ABSTRACT_ORIGIN (expr)
+ ? expr : NULL_TREE), ref_p);
/* 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. */