Commit c32f25b8 by Jakub Jelinek Committed by Jakub Jelinek

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
parent d3b623c7
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.
......@@ -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. */
......
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