[gimple-classes, committed 37/44] ipa-split.c: Use gassign

David Malcolm dmalcolm@redhat.com
Thu Nov 6 14:37:00 GMT 2014


gcc/ChangeLog.gimple-classes:
	* ipa-split.c (find_return_bb): Eliminate check for GIMPLE_ASSIGN
	since this is covered by gimple_assign_single_p, using the latter
	to introduce local gassign * "assign_stmt", using it in place
	of "stmt" for typesafety.
	(find_retval): Add a checked cast.
	(split_function): Replace check for GIMPLE_ASSIGN with a dyn_cast,
	introducing local "assign_stmt" and using it in place of
	gsi_stmt (bsi) for typesafety.
---
 gcc/ChangeLog.gimple-classes | 11 +++++++++++
 gcc/ipa-split.c              | 28 +++++++++++++++-------------
 2 files changed, 26 insertions(+), 13 deletions(-)

diff --git a/gcc/ChangeLog.gimple-classes b/gcc/ChangeLog.gimple-classes
index e4d85b2..08f045d 100644
--- a/gcc/ChangeLog.gimple-classes
+++ b/gcc/ChangeLog.gimple-classes
@@ -1,3 +1,14 @@
+2014-11-05  David Malcolm  <dmalcolm@redhat.com>
+
+	* ipa-split.c (find_return_bb): Eliminate check for GIMPLE_ASSIGN
+	since this is covered by gimple_assign_single_p, using the latter
+	to introduce local gassign * "assign_stmt", using it in place
+	of "stmt" for typesafety.
+	(find_retval): Add a checked cast.
+	(split_function): Replace check for GIMPLE_ASSIGN with a dyn_cast,
+	introducing local "assign_stmt" and using it in place of
+	gsi_stmt (bsi) for typesafety.
+
 2014-11-04  David Malcolm  <dmalcolm@redhat.com>
 
 	* cfgexpand.c (add_scope_conflicts_1): Add checked cast.
diff --git a/gcc/ipa-split.c b/gcc/ipa-split.c
index ed5c1a7..4801d7f 100644
--- a/gcc/ipa-split.c
+++ b/gcc/ipa-split.c
@@ -704,6 +704,7 @@ find_return_bb (void)
   gimple_stmt_iterator bsi;
   bool found_return = false;
   tree retval = NULL_TREE;
+  gassign *assign_stmt;
 
   if (!single_pred_p (EXIT_BLOCK_PTR_FOR_FN (cfun)))
     return return_bb;
@@ -716,13 +717,13 @@ find_return_bb (void)
 	  || is_gimple_debug (stmt)
 	  || gimple_clobber_p (stmt))
 	;
-      else if (gimple_code (stmt) == GIMPLE_ASSIGN
-	       && found_return
-	       && gimple_assign_single_p (stmt)
-	       && (auto_var_in_fn_p (gimple_assign_rhs1 (stmt),
+      else if (found_return
+	       && (assign_stmt = gimple_assign_single_p (stmt))
+	       && (auto_var_in_fn_p (gimple_assign_rhs1 (assign_stmt),
 				     current_function_decl)
-		   || is_gimple_min_invariant (gimple_assign_rhs1 (stmt)))
-	       && retval == gimple_assign_lhs (stmt))
+		   || is_gimple_min_invariant (
+			gimple_assign_rhs1 (assign_stmt)))
+	       && retval == gimple_assign_lhs (assign_stmt))
 	;
       else if (greturn *return_stmt = dyn_cast <greturn *> (stmt))
 	{
@@ -749,7 +750,7 @@ find_retval (basic_block return_bb)
       return gimple_return_retval (return_stmt);
     else if (gimple_code (gsi_stmt (bsi)) == GIMPLE_ASSIGN
 	     && !gimple_clobber_p (gsi_stmt (bsi)))
-      return gimple_assign_rhs1 (gsi_stmt (bsi));
+      return gimple_assign_rhs1 (as_a <gassign *> (gsi_stmt (bsi)));
   return NULL;
 }
 
@@ -1471,12 +1472,13 @@ split_function (struct split_point *split_point)
 			    gimple_return_set_retval (return_stmt, retval);
 			    break;
 			  }
-			else if (gimple_code (gsi_stmt (bsi)) == GIMPLE_ASSIGN
-				 && !gimple_clobber_p (gsi_stmt (bsi)))
-			  {
-			    gimple_assign_set_rhs1 (gsi_stmt (bsi), retval);
-			    break;
-			  }
+			else if (gassign *assign_stmt =
+				   dyn_cast <gassign *> (gsi_stmt (bsi)))
+			  if (!gimple_clobber_p (assign_stmt))
+			    {
+			      gimple_assign_set_rhs1 (assign_stmt, retval);
+			      break;
+			    }
 		      update_stmt (gsi_stmt (bsi));
 		    }
 		}
-- 
1.7.11.7



More information about the Gcc-patches mailing list