diff mbox

[gimple-classes,committed,36/44] cfgexpand.c: Use gassign *

Message ID 1415284340-14186-37-git-send-email-dmalcolm@redhat.com
State New
Headers show

Commit Message

David Malcolm Nov. 6, 2014, 2:32 p.m. UTC
gcc/ChangeLog.gimple-classes:
	* cfgexpand.c (add_scope_conflicts_1): Add checked cast.
	(expand_gimple_cond): Replace check for GIMPLE_ASSIGN with a
	dyn_cast, introducing local "second_assign", using it in place of
	"assign" for typesafety.
	(expand_call_stmt): Add checked casts.
---
 gcc/ChangeLog.gimple-classes |  8 ++++++++
 gcc/cfgexpand.c              | 24 ++++++++++++------------
 2 files changed, 20 insertions(+), 12 deletions(-)
diff mbox

Patch

diff --git a/gcc/ChangeLog.gimple-classes b/gcc/ChangeLog.gimple-classes
index 17a7c80..e4d85b2 100644
--- a/gcc/ChangeLog.gimple-classes
+++ b/gcc/ChangeLog.gimple-classes
@@ -1,5 +1,13 @@ 
 2014-11-04  David Malcolm  <dmalcolm@redhat.com>
 
+	* cfgexpand.c (add_scope_conflicts_1): Add checked cast.
+	(expand_gimple_cond): Replace check for GIMPLE_ASSIGN with a
+	dyn_cast, introducing local "second_assign", using it in place of
+	"assign" for typesafety.
+	(expand_call_stmt): Add checked casts.
+
+2014-11-04  David Malcolm  <dmalcolm@redhat.com>
+
 	* cfgexpand.c (gimple_assign_rhs_to_tree): Strengthen param from
 	gimple to const gassign *.
 	(expand_debug_expr): Add checked cast.
diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c
index 279202d..2c2ca14 100644
--- a/gcc/cfgexpand.c
+++ b/gcc/cfgexpand.c
@@ -449,7 +449,7 @@  add_scope_conflicts_1 (basic_block bb, bitmap work, bool for_conflict)
 
       if (gimple_clobber_p (stmt))
 	{
-	  tree lhs = gimple_assign_lhs (stmt);
+	  tree lhs = gimple_assign_lhs (as_a <gassign *> (stmt));
 	  size_t *v;
 	  /* Nested function lowering might introduce LHSs
 	     that are COMPONENT_REFs.  */
@@ -2114,14 +2114,14 @@  expand_gimple_cond (basic_block bb, gcond *stmt)
       && bitmap_bit_p (SA.values, SSA_NAME_VERSION (op0)))
     {
       gimple second = SSA_NAME_DEF_STMT (op0);
-      if (gimple_code (second) == GIMPLE_ASSIGN)
+      if (gassign *second_assign = dyn_cast <gassign *> (second))
 	{
-	  enum tree_code code2 = gimple_assign_rhs_code (second);
+	  enum tree_code code2 = gimple_assign_rhs_code (second_assign);
 	  if (TREE_CODE_CLASS (code2) == tcc_comparison)
 	    {
 	      code = code2;
-	      op0 = gimple_assign_rhs1 (second);
-	      op1 = gimple_assign_rhs2 (second);
+	      op0 = gimple_assign_rhs1 (second_assign);
+	      op1 = gimple_assign_rhs2 (second_assign);
 	    }
 	  /* If jumps are cheap turn some more codes into
 	     jumpy sequences.  */
@@ -2129,18 +2129,18 @@  expand_gimple_cond (basic_block bb, gcond *stmt)
 	    {
 	      if ((code2 == BIT_AND_EXPR
 		   && TYPE_PRECISION (TREE_TYPE (op0)) == 1
-		   && TREE_CODE (gimple_assign_rhs2 (second)) != INTEGER_CST)
+		   && TREE_CODE (gimple_assign_rhs2 (second_assign)) != INTEGER_CST)
 		  || code2 == TRUTH_AND_EXPR)
 		{
 		  code = TRUTH_ANDIF_EXPR;
-		  op0 = gimple_assign_rhs1 (second);
-		  op1 = gimple_assign_rhs2 (second);
+		  op0 = gimple_assign_rhs1 (second_assign);
+		  op1 = gimple_assign_rhs2 (second_assign);
 		}
 	      else if (code2 == BIT_IOR_EXPR || code2 == TRUTH_OR_EXPR)
 		{
 		  code = TRUTH_ORIF_EXPR;
-		  op0 = gimple_assign_rhs1 (second);
-		  op1 = gimple_assign_rhs2 (second);
+		  op0 = gimple_assign_rhs1 (second_assign);
+		  op1 = gimple_assign_rhs2 (second_assign);
 		}
 	    }
 	}
@@ -2290,8 +2290,8 @@  expand_call_stmt (gcall *stmt)
       if (builtin_p
 	  && TREE_CODE (arg) == SSA_NAME
 	  && (def = get_gimple_for_ssa_name (arg))
-	  && gimple_assign_rhs_code (def) == ADDR_EXPR)
-	arg = gimple_assign_rhs1 (def);
+	  && gimple_assign_rhs_code (as_a <gassign *> (def)) == ADDR_EXPR)
+	arg = gimple_assign_rhs1 (as_a <gassign *> (def));
       CALL_EXPR_ARG (exp, i) = arg;
     }