re PR debug/50317 (missing DW_OP_GNU_implicit_pointer)

PR debug/50317
	* tree-ssa.c (execute_update_addresses_taken): Remove
	var ={v} {CLOBBER} stmts instead of rewriting them into
	var_N ={v} {CLOBBER}.

From-SVN: r181788
This commit is contained in:
Jakub Jelinek 2011-11-28 22:04:45 +01:00 committed by Jakub Jelinek
parent d3b623c7af
commit c32f25b885
2 changed files with 20 additions and 1 deletions

View file

@ -1,5 +1,10 @@
2011-11-28 Jakub Jelinek <jakub@redhat.com>
PR debug/50317
* tree-ssa.c (execute_update_addresses_taken): Remove
var ={v} {CLOBBER} stmts instead of rewriting them into
var_N ={v} {CLOBBER}.
PR middle-end/50907
* function.c (convert_jumps_to_returns): When redirecting an edge
succ to EXIT_BLOCK_PTR, clear EDGE_CROSSING flag.

View file

@ -2118,7 +2118,7 @@ execute_update_addresses_taken (void)
if (update_vops)
{
FOR_EACH_BB (bb)
for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi);)
{
gimple stmt = gsi_stmt (gsi);
@ -2159,6 +2159,18 @@ execute_update_addresses_taken (void)
if (gimple_assign_lhs (stmt) != lhs)
gimple_assign_set_lhs (stmt, lhs);
/* For var ={v} {CLOBBER}; where var lost
TREE_ADDRESSABLE just remove the stmt. */
if (DECL_P (lhs)
&& TREE_CLOBBER_P (rhs)
&& symbol_marked_for_renaming (lhs))
{
unlink_stmt_vdef (stmt);
gsi_remove (&gsi, true);
release_defs (stmt);
continue;
}
if (gimple_assign_rhs1 (stmt) != rhs)
{
gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
@ -2205,6 +2217,8 @@ execute_update_addresses_taken (void)
if (gimple_references_memory_p (stmt)
|| is_gimple_debug (stmt))
update_stmt (stmt);
gsi_next (&gsi);
}
/* Update SSA form here, we are called as non-pass as well. */