gcc/ChangeLog.gimple-classes:
        * omp-low.c (expand_omp_taskreg): Strengthen locals "parcopy_stmt"
        and "stmt" from gimple to gassign *, replacing a check against
        GIMPLE_ASSIGN with a dyn_cast.
        (expand_omp_atomic_fetch_op): Likewise for local "stmt".
        (expand_omp_target): Split local "stmt" out, strengthening in one
        place from gimple to gassign *.  Strengthen local "tgtcopy_stmt"
        from gimple to gassign *.  Replace a check against GIMPLE_ASSIGN
        with a dyn_cast.
        (ipa_simd_modify_stmt_ops): Introduce local "assign_stmt" for
        typesafety.
---
 gcc/ChangeLog.gimple-classes | 13 +++++++++++++
 gcc/omp-low.c                | 35 ++++++++++++++++++-----------------
 2 files changed, 31 insertions(+), 17 deletions(-)

diff --git a/gcc/ChangeLog.gimple-classes b/gcc/ChangeLog.gimple-classes
index 5f5d7c4..1ff615f 100644
--- a/gcc/ChangeLog.gimple-classes
+++ b/gcc/ChangeLog.gimple-classes
@@ -1,5 +1,18 @@
 2014-11-05  David Malcolm  <dmalc...@redhat.com>
 
+       * omp-low.c (expand_omp_taskreg): Strengthen locals "parcopy_stmt"
+       and "stmt" from gimple to gassign *, replacing a check against
+       GIMPLE_ASSIGN with a dyn_cast.
+       (expand_omp_atomic_fetch_op): Likewise for local "stmt".
+       (expand_omp_target): Split local "stmt" out, strengthening in one
+       place from gimple to gassign *.  Strengthen local "tgtcopy_stmt"
+       from gimple to gassign *.  Replace a check against GIMPLE_ASSIGN
+       with a dyn_cast.
+       (ipa_simd_modify_stmt_ops): Introduce local "assign_stmt" for
+       typesafety.
+
+2014-11-05  David Malcolm  <dmalc...@redhat.com>
+
        * ipa-icf-gimple.c (func_checker::compare_bb): Add checked casts.
        (func_checker::compare_gimple_assign): Strengthen params from
        gimple to const gassign *.
diff --git a/gcc/omp-low.c b/gcc/omp-low.c
index b411e64..a20c0c4 100644
--- a/gcc/omp-low.c
+++ b/gcc/omp-low.c
@@ -5000,15 +5000,15 @@ expand_omp_taskreg (struct omp_region *region)
        {
          basic_block entry_succ_bb = single_succ (entry_bb);
          tree arg, narg;
-         gimple parcopy_stmt = NULL;
+         gassign *parcopy_stmt = NULL;
 
          for (gsi = gsi_start_bb (entry_succ_bb); ; gsi_next (&gsi))
            {
-             gimple stmt;
+             gassign *stmt;
 
              gcc_assert (!gsi_end_p (gsi));
-             stmt = gsi_stmt (gsi);
-             if (gimple_code (stmt) != GIMPLE_ASSIGN)
+             stmt = dyn_cast <gassign *> (gsi_stmt (gsi));
+             if (!stmt)
                continue;
 
              if (gimple_num_ops (stmt) == 2)
@@ -7871,7 +7871,7 @@ expand_omp_atomic_fetch_op (basic_block load_bb,
   tree lhs, rhs;
   basic_block store_bb = single_succ (load_bb);
   gimple_stmt_iterator gsi;
-  gimple stmt;
+  gassign *stmt;
   location_t loc;
   enum tree_code code;
   bool need_old, need_new;
@@ -7893,10 +7893,10 @@ expand_omp_atomic_fetch_op (basic_block load_bb,
   */
 
   gsi = gsi_after_labels (store_bb);
-  stmt = gsi_stmt (gsi);
-  loc = gimple_location (stmt);
-  if (!is_gimple_assign (stmt))
+  stmt = dyn_cast <gassign *> (gsi_stmt (gsi));
+  if (!stmt)
     return false;
+  loc = gimple_location (stmt);
   gsi_next (&gsi);
   if (gimple_code (gsi_stmt (gsi)) != GIMPLE_OMP_ATOMIC_STORE)
     return false;
@@ -8323,7 +8323,6 @@ expand_omp_target (struct omp_region *region)
   tree child_fn = NULL_TREE, block, t;
   gimple_stmt_iterator gsi;
   gomp_target *entry_stmt;
-  gimple stmt;
   edge e;
 
   entry_stmt = as_a <gomp_target *> (last_stmt (region->entry));
@@ -8360,15 +8359,15 @@ expand_omp_target (struct omp_region *region)
          basic_block entry_succ_bb = single_succ (entry_bb);
          gimple_stmt_iterator gsi;
          tree arg;
-         gimple tgtcopy_stmt = NULL;
+         gassign *tgtcopy_stmt = NULL;
          tree sender
            = TREE_VEC_ELT (gimple_omp_target_data_arg (entry_stmt), 0);
 
          for (gsi = gsi_start_bb (entry_succ_bb); ; gsi_next (&gsi))
            {
              gcc_assert (!gsi_end_p (gsi));
-             stmt = gsi_stmt (gsi);
-             if (gimple_code (stmt) != GIMPLE_ASSIGN)
+             gassign *stmt = dyn_cast <gassign *> (gsi_stmt (gsi));
+             if (!stmt)
                continue;
 
              if (gimple_num_ops (stmt) == 2)
@@ -8417,7 +8416,7 @@ expand_omp_target (struct omp_region *region)
       /* Split ENTRY_BB at GIMPLE_OMP_TARGET,
         so that it can be moved to the child function.  */
       gsi = gsi_last_bb (entry_bb);
-      stmt = gsi_stmt (gsi);
+      gimple stmt = gsi_stmt (gsi);
       gcc_assert (stmt && gimple_code (stmt) == GIMPLE_OMP_TARGET
                  && (gimple_omp_target_kind (as_a <gomp_target *> (stmt))
                      == GF_OMP_TARGET_KIND_REGION));
@@ -8553,7 +8552,7 @@ expand_omp_target (struct omp_region *region)
       set_immediate_dominator (CDI_DOMINATORS, then_bb, cond_bb);
       set_immediate_dominator (CDI_DOMINATORS, else_bb, cond_bb);
 
-      stmt = gimple_build_cond_empty (cond);
+      gimple stmt = gimple_build_cond_empty (cond);
       gsi = gsi_last_bb (cond_bb);
       gsi_insert_after (&gsi, stmt, GSI_CONTINUE_LINKING);
 
@@ -11916,9 +11915,11 @@ ipa_simd_modify_stmt_ops (tree *tp, int 
*walk_subtrees, void *data)
        }
       else
        {
-         stmt = gimple_build_assign (make_ssa_name (TREE_TYPE (repl),
-                                                    NULL), repl);
-         repl = gimple_assign_lhs (stmt);
+         gassign *assign_stmt =
+           gimple_build_assign (make_ssa_name (TREE_TYPE (repl),
+                                               NULL), repl);
+         stmt = assign_stmt;
+         repl = gimple_assign_lhs (assign_stmt);
        }
       gimple_stmt_iterator gsi = gsi_for_stmt (info->stmt);
       gsi_insert_before (&gsi, stmt, GSI_SAME_STMT);
-- 
1.7.11.7

Reply via email to