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]

[gimple-classes, committed 27/44] tree-ssa-dce.c: Use gassign


gcc/ChangeLog.gimple-classes:
	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Within
	case GIMPLE_ASSIGN, introduce local "assign_stmt" and use in place
	of "stmt" for typesafety.
	(mark_all_reaching_defs_necessary_1): Add a checked cast.
	(propagate_necessity): Likewise.
	(remove_dead_stmt): Introduce local gassign * "assign_stmt" from
	result of gimple_assign_single_p and use it in place of "stmt" for
	typesafety.
---
 gcc/ChangeLog.gimple-classes | 11 +++++++++++
 gcc/tree-ssa-dce.c           | 22 +++++++++++++---------
 2 files changed, 24 insertions(+), 9 deletions(-)

diff --git a/gcc/ChangeLog.gimple-classes b/gcc/ChangeLog.gimple-classes
index 19a8295..8230179 100644
--- a/gcc/ChangeLog.gimple-classes
+++ b/gcc/ChangeLog.gimple-classes
@@ -1,5 +1,16 @@
 2014-11-03  David Malcolm  <dmalcolm@redhat.com>
 
+	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Within
+	case GIMPLE_ASSIGN, introduce local "assign_stmt" and use in place
+	of "stmt" for typesafety.
+	(mark_all_reaching_defs_necessary_1): Add a checked cast.
+	(propagate_necessity): Likewise.
+	(remove_dead_stmt): Introduce local gassign * "assign_stmt" from
+	result of gimple_assign_single_p and use it in place of "stmt" for
+	typesafety.
+
+2014-11-03  David Malcolm  <dmalcolm@redhat.com>
+
 	* tree-ssa-copy.c (stmt_may_generate_copy): Replace check against
 	GIMPLE_ASSIGN with a dyn_cast, introducing local gassign *
 	"assign_stmt", using it in place of "stmt" for typesafety.
diff --git a/gcc/tree-ssa-dce.c b/gcc/tree-ssa-dce.c
index 20a4e40..bf2cae6 100644
--- a/gcc/tree-ssa-dce.c
+++ b/gcc/tree-ssa-dce.c
@@ -289,9 +289,12 @@ mark_stmt_if_obviously_necessary (gimple stmt, bool aggressive)
       break;
 
     case GIMPLE_ASSIGN:
-      if (TREE_CODE (gimple_assign_lhs (stmt)) == SSA_NAME
-	  && TREE_CLOBBER_P (gimple_assign_rhs1 (stmt)))
-	return;
+      {
+	gassign *assign_stmt = as_a <gassign *> (stmt);
+	if (TREE_CODE (gimple_assign_lhs (assign_stmt)) == SSA_NAME
+	    && TREE_CLOBBER_P (gimple_assign_rhs1 (assign_stmt)))
+	  return;
+      }
       break;
 
     default:
@@ -570,7 +573,7 @@ mark_all_reaching_defs_necessary_1 (ao_ref *ref ATTRIBUTE_UNUSED,
   if (!chain_ovfl
       && gimple_assign_single_p (def_stmt))
     {
-      tree lhs = gimple_assign_lhs (def_stmt);
+      tree lhs = gimple_assign_lhs (as_a <gassign *> (def_stmt));
       if (!ref_may_be_aliased (lhs))
 	return false;
     }
@@ -868,7 +871,7 @@ propagate_necessity (bool aggressive)
 	    {
 	      tree rhs;
 	      /* If this is a load mark things necessary.  */
-	      rhs = gimple_assign_rhs1 (stmt);
+	      rhs = gimple_assign_rhs1 (as_a <gassign *> (stmt));
 	      if (TREE_CODE (rhs) != SSA_NAME
 		  && !is_gimple_min_invariant (rhs)
 		  && TREE_CODE (rhs) != CONSTRUCTOR)
@@ -1125,18 +1128,19 @@ remove_dead_stmt (gimple_stmt_iterator *i, basic_block bb)
 
   /* If this is a store into a variable that is being optimized away,
      add a debug bind stmt if possible.  */
+  gassign *assign_stmt;
   if (MAY_HAVE_DEBUG_STMTS
-      && gimple_assign_single_p (stmt)
-      && is_gimple_val (gimple_assign_rhs1 (stmt)))
+      && (assign_stmt = gimple_assign_single_p (stmt))
+      && is_gimple_val (gimple_assign_rhs1 (assign_stmt)))
     {
-      tree lhs = gimple_assign_lhs (stmt);
+      tree lhs = gimple_assign_lhs (assign_stmt);
       if ((TREE_CODE (lhs) == VAR_DECL || TREE_CODE (lhs) == PARM_DECL)
 	  && !DECL_IGNORED_P (lhs)
 	  && is_gimple_reg_type (TREE_TYPE (lhs))
 	  && !is_global_var (lhs)
 	  && !DECL_HAS_VALUE_EXPR_P (lhs))
 	{
-	  tree rhs = gimple_assign_rhs1 (stmt);
+	  tree rhs = gimple_assign_rhs1 (assign_stmt);
 	  gdebug *note
 	    = gimple_build_debug_bind (lhs, unshare_expr (rhs), stmt);
 	  gsi_insert_after (i, note, GSI_SAME_STMT);
-- 
1.7.11.7


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