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 17/17] tree-ssa-propagate.c: Use gassign


gcc/ChangeLog.gimple-classes:
	* tree-ssa-propagate.c
	(substitute_and_fold_dom_walker::before_dom_children): Add checked
	cast.  Replace is_gimple_assign with a dyn_cast, introducing local
	"assign_stmt" and using it in place of "stmt" for typesafety.
	(may_propagate_copy_into_stmt): Add checked casts.
	(propagate_tree_value_into_stmt): Add checked cast.
---
 gcc/ChangeLog.gimple-classes |  9 +++++++++
 gcc/tree-ssa-propagate.c     | 26 ++++++++++++++------------
 2 files changed, 23 insertions(+), 12 deletions(-)

diff --git a/gcc/ChangeLog.gimple-classes b/gcc/ChangeLog.gimple-classes
index 7975302..382bd3d 100644
--- a/gcc/ChangeLog.gimple-classes
+++ b/gcc/ChangeLog.gimple-classes
@@ -1,5 +1,14 @@
 2014-11-06  David Malcolm  <dmalcolm@redhat.com>
 
+	* tree-ssa-propagate.c
+	(substitute_and_fold_dom_walker::before_dom_children): Add checked
+	cast.  Replace is_gimple_assign with a dyn_cast, introducing local
+	"assign_stmt" and using it in place of "stmt" for typesafety.
+	(may_propagate_copy_into_stmt): Add checked casts.
+	(propagate_tree_value_into_stmt): Add checked cast.
+
+2014-11-06  David Malcolm  <dmalcolm@redhat.com>
+
 	* tree-ssa-pre.c (compute_avail): Within case GIMPLE_ASSIGN,
 	introduce local "assign_stmt" via an as_a and use it in place of
 	"stmt" for typesafety.
diff --git a/gcc/tree-ssa-propagate.c b/gcc/tree-ssa-propagate.c
index 478e8b9..ba677c9 100644
--- a/gcc/tree-ssa-propagate.c
+++ b/gcc/tree-ssa-propagate.c
@@ -1103,7 +1103,8 @@ substitute_and_fold_dom_walker::before_dom_children (basic_block bb)
 	 afterwards.  */
 
       if (code == GIMPLE_ASSIGN
-	  && TREE_CODE (gimple_assign_rhs1 (stmt)) == ASSERT_EXPR)
+	  && (TREE_CODE (gimple_assign_rhs1 (as_a <gassign *> (stmt)))
+	      == ASSERT_EXPR))
 	continue;
 
       /* No point propagating into a stmt we have a value for we
@@ -1164,15 +1165,15 @@ substitute_and_fold_dom_walker::before_dom_children (basic_block bb)
 	  if (maybe_clean_or_replace_eh_stmt (old_stmt, stmt))
 	    bitmap_set_bit (need_eh_cleanup, bb->index);
 
-	  if (is_gimple_assign (stmt)
-	      && (get_gimple_rhs_class (gimple_assign_rhs_code (stmt))
-		  == GIMPLE_SINGLE_RHS))
-	    {
-	      tree rhs = gimple_assign_rhs1 (stmt);
+	  if (gassign *assign_stmt = dyn_cast <gassign *> (stmt))
+	    if (get_gimple_rhs_class (gimple_assign_rhs_code (assign_stmt))
+		== GIMPLE_SINGLE_RHS)
+	      {
+		tree rhs = gimple_assign_rhs1 (assign_stmt);
 
-	      if (TREE_CODE (rhs) == ADDR_EXPR)
-		recompute_tree_invariant_for_addr_expr (rhs);
-	    }
+		if (TREE_CODE (rhs) == ADDR_EXPR)
+		  recompute_tree_invariant_for_addr_expr (rhs);
+	      }
 
 	  /* Determine what needs to be done to update the SSA form.  */
 	  update_stmt (stmt);
@@ -1324,7 +1325,8 @@ may_propagate_copy_into_stmt (gimple dest, tree orig)
      for the expression, so we delegate to may_propagate_copy.  */
 
   if (gimple_assign_single_p (dest))
-    return may_propagate_copy (gimple_assign_rhs1 (dest), orig);
+    return may_propagate_copy (gimple_assign_rhs1 (as_a <gassign *> (dest)),
+			       orig);
   else if (gswitch *dest_swtch = dyn_cast <gswitch *> (dest))
     return may_propagate_copy (gimple_switch_index (dest_swtch), orig);
 
@@ -1338,7 +1340,7 @@ may_propagate_copy_into_stmt (gimple dest, tree orig)
     return false;
 
   if (is_gimple_assign (dest))
-    type_d = TREE_TYPE (gimple_assign_lhs (dest));
+    type_d = TREE_TYPE (gimple_assign_lhs (as_a <gassign *> (dest)));
   else if (gimple_code (dest) == GIMPLE_COND)
     type_d = boolean_type_node;
   else if (is_gimple_call (dest)
@@ -1450,7 +1452,7 @@ propagate_tree_value_into_stmt (gimple_stmt_iterator *gsi, tree val)
     {
       tree expr = NULL_TREE;
       if (gimple_assign_single_p (stmt))
-        expr = gimple_assign_rhs1 (stmt);
+        expr = gimple_assign_rhs1 (as_a <gassign *> (stmt));
       propagate_tree_value (&expr, val);
       gimple_assign_set_rhs_from_tree (gsi, expr);
     }
-- 
1.7.11.7


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