diff options
author | Jakub Jelinek <jakub@redhat.com> | 2011-11-28 22:04:45 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2011-11-28 22:04:45 +0100 |
commit | c32f25b88513490bdefa864117808f7cbc84c0a0 (patch) | |
tree | 8ed7735312bef73319357fb8f209e709ce05e839 /gcc | |
parent | d3b623c7af627ec5d0fbd14d94a115b6cac0e501 (diff) | |
download | gcc-c32f25b88513490bdefa864117808f7cbc84c0a0.zip gcc-c32f25b88513490bdefa864117808f7cbc84c0a0.tar.gz gcc-c32f25b88513490bdefa864117808f7cbc84c0a0.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/tree-ssa.c | 16 |
2 files changed, 20 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8b978c0..2910e81 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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. diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c index 8f73d91..9785721 100644 --- a/gcc/tree-ssa.c +++ b/gcc/tree-ssa.c @@ -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. */ |