OSDN Git Service

PR debug/50317
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 28 Nov 2011 21:04:45 +0000 (21:04 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 28 Nov 2011 21:04:45 +0000 (21:04 +0000)
* tree-ssa.c (execute_update_addresses_taken): Remove
var ={v} {CLOBBER} stmts instead of rewriting them into
var_N ={v} {CLOBBER}.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181788 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/tree-ssa.c

index 8b978c0..2910e81 100644 (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.
index 8f73d91..9785721 100644 (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.  */