Commit c87d6057 by Jakub Jelinek Committed by Jakub Jelinek

re PR debug/44375 (goto_locus lost at -O0 during cfg cleanup)

	PR debug/44375
	* tree-cfg.c (gimple_can_merge_blocks_p): For -O0
	return false if merging the bbs would lead to goto_locus
	location being lost from the IL.

From-SVN: r160219
parent e2cc3483
2010-06-03 Jakub Jelinek <jakub@redhat.com>
PR debug/44375
* tree-cfg.c (gimple_can_merge_blocks_p): For -O0
return false if merging the bbs would lead to goto_locus
location being lost from the IL.
2010-06-03 Jan Hubicka <jh@suse.cz> 2010-06-03 Jan Hubicka <jh@suse.cz>
Jakub Jelinek <jakub@redhat.com> Jakub Jelinek <jakub@redhat.com>
......
...@@ -1475,6 +1475,23 @@ gimple_can_merge_blocks_p (basic_block a, basic_block b) ...@@ -1475,6 +1475,23 @@ gimple_can_merge_blocks_p (basic_block a, basic_block b)
&& name_mappings_registered_p ()) && name_mappings_registered_p ())
return false; return false;
/* When not optimizing, don't merge if we'd lose goto_locus. */
if (!optimize
&& single_succ_edge (a)->goto_locus != UNKNOWN_LOCATION)
{
location_t goto_locus = single_succ_edge (a)->goto_locus;
gimple_stmt_iterator prev, next;
prev = gsi_last_nondebug_bb (a);
next = gsi_after_labels (b);
if (!gsi_end_p (next) && is_gimple_debug (gsi_stmt (next)))
gsi_next_nondebug (&next);
if ((gsi_end_p (prev)
|| gimple_location (gsi_stmt (prev)) != goto_locus)
&& (gsi_end_p (next)
|| gimple_location (gsi_stmt (next)) != goto_locus))
return false;
}
return true; return true;
} }
......
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