This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH][1/3] Release SSA names properly


This releases SSA names properly in some places.

Bootstrapped and tested on x86_64-unknown-linux-gnu, applied to trunk.

Richard.

2012-02-10  Richard Guenther  <rguenther@suse.de>

	* tree-nrv.c (tree_nrv): Release VDEFs.
	* tree-sra.c (sra_modify_constructor_assign): Likewise.
	(sra_modify_assign): Likewise.
	* tree-vect-stmts.c (vect_remove_stores): Likewise.
	* tree-vect-loop.c (vect_transform_loop): Likewise.
	* tree-ssa-dom.c (optimize_stmt): Likewise.
	* tree-vect-slp.c (vect_schedule_slp): Likewise.
	* tree-ssa-math-opts.c (execute_cse_sincos): Likewise.

Index: gcc/tree-nrv.c
===================================================================
*** gcc/tree-nrv.c.orig	2012-04-04 14:57:38.000000000 +0200
--- gcc/tree-nrv.c	2012-04-04 15:17:13.331595050 +0200
*************** tree_nrv (void)
*** 244,249 ****
--- 244,250 ----
  	    {
  	      unlink_stmt_vdef (stmt);
  	      gsi_remove (&gsi, true);
+ 	      release_defs (stmt);
  	    }
  	  else
  	    {
Index: gcc/tree-sra.c
===================================================================
*** gcc/tree-sra.c.orig	2012-04-04 14:57:38.000000000 +0200
--- gcc/tree-sra.c	2012-04-04 15:17:13.334595082 +0200
*************** sra_modify_constructor_assign (gimple *s
*** 2821,2826 ****
--- 2821,2827 ----
  	{
  	  unlink_stmt_vdef (*stmt);
  	  gsi_remove (gsi, true);
+ 	  release_defs (*stmt);
  	  return SRA_AM_REMOVED;
  	}
        else
*************** sra_modify_constructor_assign (gimple *s
*** 2844,2849 ****
--- 2845,2851 ----
        init_subtree_with_zero (acc, gsi, false, loc);
        unlink_stmt_vdef (*stmt);
        gsi_remove (gsi, true);
+       release_defs (*stmt);
        return SRA_AM_REMOVED;
      }
    else
*************** sra_modify_assign (gimple *stmt, gimple_
*** 3094,3099 ****
--- 3096,3102 ----
  	      gsi_next (gsi);
  	      unlink_stmt_vdef (*stmt);
  	      gsi_remove (&orig_gsi, true);
+ 	      release_defs (*stmt);
  	      sra_stats.deleted++;
  	      return SRA_AM_REMOVED;
  	    }
*************** sra_modify_assign (gimple *stmt, gimple_
*** 3114,3119 ****
--- 3117,3123 ----
  	      gcc_assert (*stmt == gsi_stmt (*gsi));
  	      unlink_stmt_vdef (*stmt);
  	      gsi_remove (gsi, true);
+ 	      release_defs (*stmt);
  	      sra_stats.deleted++;
  	      return SRA_AM_REMOVED;
  	    }
Index: gcc/tree-vect-stmts.c
===================================================================
*** gcc/tree-vect-stmts.c.orig	2012-04-04 14:57:38.000000000 +0200
--- gcc/tree-vect-stmts.c	2012-04-04 15:17:13.337595115 +0200
*************** vect_remove_stores (gimple first_stmt)
*** 5653,5659 ****
--- 5653,5661 ----
  	next = STMT_VINFO_RELATED_STMT (stmt_info);
        /* Free the attached stmt_vec_info and remove the stmt.  */
        next_si = gsi_for_stmt (next);
+       unlink_stmt_vdef (next);
        gsi_remove (&next_si, true);
+       release_defs (next);
        free_stmt_vec_info (next);
        next = tmp;
      }
Index: gcc/tree-vect-loop.c
===================================================================
*** gcc/tree-vect-loop.c.orig	2012-04-04 14:57:38.000000000 +0200
--- gcc/tree-vect-loop.c	2012-04-04 15:17:13.338595125 +0200
*************** vect_transform_loop (loop_vec_info loop_
*** 5476,5483 ****
  	      else
  		{
  		  /* Free the attached stmt_vec_info and remove the stmt.  */
! 		  free_stmt_vec_info (gsi_stmt (si));
  		  gsi_remove (&si, true);
  		  continue;
  		}
  	    }
--- 5476,5486 ----
  	      else
  		{
  		  /* Free the attached stmt_vec_info and remove the stmt.  */
! 		  gimple store = gsi_stmt (si);
! 		  free_stmt_vec_info (store);
! 		  unlink_stmt_vdef (store);
  		  gsi_remove (&si, true);
+ 		  release_defs (store);
  		  continue;
  		}
  	    }
Index: gcc/tree-ssa-dom.c
===================================================================
*** gcc/tree-ssa-dom.c.orig	2012-04-04 15:02:16.000000000 +0200
--- gcc/tree-ssa-dom.c	2012-04-04 15:17:52.463010484 +0200
*************** optimize_stmt (basic_block bb, gimple_st
*** 2301,2306 ****
--- 2301,2307 ----
  		  if (dump_file && (dump_flags & TDF_DETAILS))
  		    fprintf (dump_file, "  Flagged to clear EH edges.\n");
  		}
+ 	      release_defs (stmt);
  	      return;
  	    }
  	}
Index: gcc/tree-vect-slp.c
===================================================================
*** gcc/tree-vect-slp.c.orig	2012-04-04 14:57:38.000000000 +0200
--- gcc/tree-vect-slp.c	2012-04-04 15:17:13.341595156 +0200
*************** vect_schedule_slp (loop_vec_info loop_vi
*** 3043,3049 ****
--- 3043,3051 ----
             store = STMT_VINFO_RELATED_STMT (vinfo_for_stmt (store));
            /* Free the attached stmt_vec_info and remove the stmt.  */
            gsi = gsi_for_stmt (store);
+ 	  unlink_stmt_vdef (store);
            gsi_remove (&gsi, true);
+ 	  release_defs (store);
            free_stmt_vec_info (store);
          }
      }
Index: gcc/tree-ssa-math-opts.c
===================================================================
*** gcc/tree-ssa-math-opts.c.orig	2012-04-04 15:03:35.000000000 +0200
--- gcc/tree-ssa-math-opts.c	2012-04-04 15:17:13.342595167 +0200
*************** execute_cse_sincos (void)
*** 1430,1435 ****
--- 1430,1437 ----
  		      gimple_set_location (new_stmt, loc);
  		      unlink_stmt_vdef (stmt);
  		      gsi_replace (&gsi, new_stmt, true);
+ 		      if (gimple_vdef (stmt))
+ 			release_ssa_name (gimple_vdef (stmt));
  		    }
  		  break;
  
*************** execute_cse_sincos (void)
*** 1450,1455 ****
--- 1452,1459 ----
  		      gimple_set_location (new_stmt, loc);
  		      unlink_stmt_vdef (stmt);
  		      gsi_replace (&gsi, new_stmt, true);
+ 		      if (gimple_vdef (stmt))
+ 			release_ssa_name (gimple_vdef (stmt));
  		    }
  		  break;
  
*************** execute_cse_sincos (void)
*** 1465,1470 ****
--- 1469,1476 ----
  		      gimple_set_location (new_stmt, loc);
  		      unlink_stmt_vdef (stmt);
  		      gsi_replace (&gsi, new_stmt, true);
+ 		      if (gimple_vdef (stmt))
+ 			release_ssa_name (gimple_vdef (stmt));
  		    }
  		  break;
  
Index: gcc/tree-eh.c
===================================================================
*** gcc/tree-eh.c.orig	2012-04-04 14:57:38.000000000 +0200
--- gcc/tree-eh.c	2012-04-04 15:17:13.343595178 +0200
*************** sink_clobbers (basic_block bb)
*** 3268,3279 ****
        vdef = gimple_vdef (stmt);
        if (vdef && TREE_CODE (vdef) == SSA_NAME)
  	{
  	  vdef = SSA_NAME_VAR (vdef);
  	  mark_sym_for_renaming (vdef);
  	  gimple_set_vdef (stmt, vdef);
  	  gimple_set_vuse (stmt, vdef);
  	}
-       release_defs (stmt);
        gsi_insert_before (&dgsi, stmt, GSI_SAME_STMT);
      }
  
--- 3268,3279 ----
        vdef = gimple_vdef (stmt);
        if (vdef && TREE_CODE (vdef) == SSA_NAME)
  	{
+ 	  release_ssa_name (vdef);
  	  vdef = SSA_NAME_VAR (vdef);
  	  mark_sym_for_renaming (vdef);
  	  gimple_set_vdef (stmt, vdef);
  	  gimple_set_vuse (stmt, vdef);
  	}
        gsi_insert_before (&dgsi, stmt, GSI_SAME_STMT);
      }
  
*************** cleanup_empty_eh_move_lp (basic_block bb
*** 3955,3961 ****
  
    /* Delete the RESX that was matched within the empty handler block.  */
    gsi = gsi_last_bb (bb);
!   mark_virtual_ops_for_renaming (gsi_stmt (gsi));
    gsi_remove (&gsi, true);
  
    /* Clean up E_OUT for the fallthru.  */
--- 3955,3961 ----
  
    /* Delete the RESX that was matched within the empty handler block.  */
    gsi = gsi_last_bb (bb);
!   unlink_stmt_vdef (gsi_stmt (gsi));
    gsi_remove (&gsi, true);
  
    /* Clean up E_OUT for the fallthru.  */


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]