Commit f6918a8b by Richard Biener Committed by Richard Biener

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
parent a8f7a895
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.
2016-07-18 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/71493
......
......@@ -890,12 +890,16 @@ DFS::DFS_write_tree_body (struct output_block *ob,
/* Follow BLOCK_ABSTRACT_ORIGIN for the limited cases we can
handle - those that represent inlined function scopes.
For the drop rest them on the floor instead of ICEing
in dwarf2out.c. */
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);
DFS_follow_tree_edge (ultimate_origin);
}
else if (BLOCK_ABSTRACT_ORIGIN (expr))
DFS_follow_tree_edge (expr);
/* Do not follow BLOCK_NONLOCALIZED_VARS. We cannot handle debug
information for early inlined BLOCKs so drop it on the floor instead
of ICEing in dwarf2out.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. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment