gcc/ChangeLog.gimple-classes:
        * gimple-match-head.c (gimple_simplify): Within
        case GIMPLE_ASSIGN, introduce local "assign_stmt" via a checked
        cast and use it in place of "stmt" for typesafety.
---
 gcc/ChangeLog.gimple-classes |  6 ++++++
 gcc/gimple-match-head.c      | 25 +++++++++++++------------
 2 files changed, 19 insertions(+), 12 deletions(-)

diff --git a/gcc/ChangeLog.gimple-classes b/gcc/ChangeLog.gimple-classes
index c766c36..baf8c76 100644
--- a/gcc/ChangeLog.gimple-classes
+++ b/gcc/ChangeLog.gimple-classes
@@ -1,5 +1,11 @@
 2014-11-03  David Malcolm  <dmalc...@redhat.com>
 
+       * gimple-match-head.c (gimple_simplify): Within
+       case GIMPLE_ASSIGN, introduce local "assign_stmt" via a checked
+       cast and use it in place of "stmt" for typesafety.
+
+2014-11-03  David Malcolm  <dmalc...@redhat.com>
+
        * gimple-fold.h (rewrite_to_defined_overflow): Strengthen from
        gimple to gassign *.
        * gimple-fold.c (rewrite_to_defined_overflow): Likewise.
diff --git a/gcc/gimple-match-head.c b/gcc/gimple-match-head.c
index 844f08a..fd829a9 100644
--- a/gcc/gimple-match-head.c
+++ b/gcc/gimple-match-head.c
@@ -589,16 +589,17 @@ gimple_simplify (gimple stmt,
     {
     case GIMPLE_ASSIGN:
       {
-       enum tree_code code = gimple_assign_rhs_code (stmt);
-       tree type = TREE_TYPE (gimple_assign_lhs (stmt));
-       switch (gimple_assign_rhs_class (stmt))
+       gassign *assign_stmt = as_a <gassign *> (stmt);
+       enum tree_code code = gimple_assign_rhs_code (assign_stmt);
+       tree type = TREE_TYPE (gimple_assign_lhs (assign_stmt));
+       switch (gimple_assign_rhs_class (assign_stmt))
          {
          case GIMPLE_SINGLE_RHS:
            if (code == REALPART_EXPR
                || code == IMAGPART_EXPR
                || code == VIEW_CONVERT_EXPR)
              {
-               tree op0 = TREE_OPERAND (gimple_assign_rhs1 (stmt), 0);
+               tree op0 = TREE_OPERAND (gimple_assign_rhs1 (assign_stmt), 0);
                if (valueize && TREE_CODE (op0) == SSA_NAME)
                  {
                    tree tem = valueize (op0);
@@ -611,7 +612,7 @@ gimple_simplify (gimple stmt,
              }
            else if (code == BIT_FIELD_REF)
              {
-               tree rhs1 = gimple_assign_rhs1 (stmt);
+               tree rhs1 = gimple_assign_rhs1 (assign_stmt);
                tree op0 = TREE_OPERAND (rhs1, 0);
                if (valueize && TREE_CODE (op0) == SSA_NAME)
                  {
@@ -628,7 +629,7 @@ gimple_simplify (gimple stmt,
            else if (code == SSA_NAME
                     && valueize)
              {
-               tree op0 = gimple_assign_rhs1 (stmt);
+               tree op0 = gimple_assign_rhs1 (assign_stmt);
                tree valueized = valueize (op0);
                if (!valueized || op0 == valueized)
                  return false;
@@ -639,7 +640,7 @@ gimple_simplify (gimple stmt,
            break;
          case GIMPLE_UNARY_RHS:
            {
-             tree rhs1 = gimple_assign_rhs1 (stmt);
+             tree rhs1 = gimple_assign_rhs1 (assign_stmt);
              if (valueize && TREE_CODE (rhs1) == SSA_NAME)
                {
                  tree tem = valueize (rhs1);
@@ -652,14 +653,14 @@ gimple_simplify (gimple stmt,
            }
          case GIMPLE_BINARY_RHS:
            {
-             tree rhs1 = gimple_assign_rhs1 (stmt);
+             tree rhs1 = gimple_assign_rhs1 (assign_stmt);
              if (valueize && TREE_CODE (rhs1) == SSA_NAME)
                {
                  tree tem = valueize (rhs1);
                  if (tem)
                    rhs1 = tem;
                }
-             tree rhs2 = gimple_assign_rhs2 (stmt);
+             tree rhs2 = gimple_assign_rhs2 (assign_stmt);
              if (valueize && TREE_CODE (rhs2) == SSA_NAME)
                {
                  tree tem = valueize (rhs2);
@@ -673,21 +674,21 @@ gimple_simplify (gimple stmt,
            }
          case GIMPLE_TERNARY_RHS:
            {
-             tree rhs1 = gimple_assign_rhs1 (stmt);
+             tree rhs1 = gimple_assign_rhs1 (assign_stmt);
              if (valueize && TREE_CODE (rhs1) == SSA_NAME)
                {
                  tree tem = valueize (rhs1);
                  if (tem)
                    rhs1 = tem;
                }
-             tree rhs2 = gimple_assign_rhs2 (stmt);
+             tree rhs2 = gimple_assign_rhs2 (assign_stmt);
              if (valueize && TREE_CODE (rhs2) == SSA_NAME)
                {
                  tree tem = valueize (rhs2);
                  if (tem)
                    rhs2 = tem;
                }
-             tree rhs3 = gimple_assign_rhs3 (stmt);
+             tree rhs3 = gimple_assign_rhs3 (assign_stmt);
              if (valueize && TREE_CODE (rhs3) == SSA_NAME)
                {
                  tree tem = valueize (rhs3);
-- 
1.7.11.7

Reply via email to