gcc/ChangeLog.gimple-classes:
        * gimple.h (gimple_eh_filter_types): Strengthen param from
        const_gimple to const geh_filter *.
        (gimple_eh_filter_types_ptr): Strengthen param from gimple to
        geh_filter *.
        (gimple_eh_filter_failure_ptr): Likewise.
        (gimple_eh_filter_failure): Likewise.

        * gimple-low.c (lower_try_catch): Add a checked cast.
        (gimple_try_catch_may_fallthru): Likewise.
        * gimple-walk.c (walk_gimple_op): Likewise.
        (walk_gimple_stmt): Likewise.
        * omp-low.c (lower_omp_1): Likewise.
        * tree-cfg.c (verify_gimple_in_seq_2): Likewise.
        (do_warn_unused_result): Likewise.
        * tree-eh.c (collect_finally_tree): Likewise.
        (replace_goto_queue_1): Likewise.
        (lower_eh_filter): Strengthen local "inner" from gimple to
        geh_filter * via a checked cast.
        (refactor_eh_r): Add a checked cast.
        * tree-inline.c (remap_gimple_stmt): Within case
        GIMPLE_EH_FILTER, introduce local "filter_stmt" via a checked cast
        and use in place of "stmt".
        (estimate_num_insns): Add checked cast.
---
 gcc/ChangeLog.gimple-classes | 26 ++++++++++++++++++++++++++
 gcc/gimple-low.c             |  7 +++++--
 gcc/gimple-walk.c            |  9 +++++----
 gcc/gimple.h                 | 18 ++++++------------
 gcc/omp-low.c                |  3 ++-
 gcc/tree-cfg.c               |  6 ++++--
 gcc/tree-eh.c                | 15 ++++++++++-----
 gcc/tree-inline.c            | 12 +++++++++---
 8 files changed, 67 insertions(+), 29 deletions(-)

diff --git a/gcc/ChangeLog.gimple-classes b/gcc/ChangeLog.gimple-classes
index e8001f4..07c12cd 100644
--- a/gcc/ChangeLog.gimple-classes
+++ b/gcc/ChangeLog.gimple-classes
@@ -1,5 +1,31 @@
 2014-10-29  David Malcolm  <dmalc...@redhat.com>
 
+       * gimple.h (gimple_eh_filter_types): Strengthen param from
+       const_gimple to const geh_filter *.
+       (gimple_eh_filter_types_ptr): Strengthen param from gimple to
+       geh_filter *.
+       (gimple_eh_filter_failure_ptr): Likewise.
+       (gimple_eh_filter_failure): Likewise.
+
+       * gimple-low.c (lower_try_catch): Add a checked cast.
+       (gimple_try_catch_may_fallthru): Likewise.
+       * gimple-walk.c (walk_gimple_op): Likewise.
+       (walk_gimple_stmt): Likewise.
+       * omp-low.c (lower_omp_1): Likewise.
+       * tree-cfg.c (verify_gimple_in_seq_2): Likewise.
+       (do_warn_unused_result): Likewise.
+       * tree-eh.c (collect_finally_tree): Likewise.
+       (replace_goto_queue_1): Likewise.
+       (lower_eh_filter): Strengthen local "inner" from gimple to
+       geh_filter * via a checked cast.
+       (refactor_eh_r): Add a checked cast.
+       * tree-inline.c (remap_gimple_stmt): Within case
+       GIMPLE_EH_FILTER, introduce local "filter_stmt" via a checked cast
+       and use in place of "stmt".
+       (estimate_num_insns): Add checked cast.
+
+2014-10-29  David Malcolm  <dmalc...@redhat.com>
+
        * gimple.h (gimple_omp_parallel_combined_p): Strengthen param from
        const_gimple to const gomp_parallel *.
        (gimple_omp_parallel_clauses): Likewise.
diff --git a/gcc/gimple-low.c b/gcc/gimple-low.c
index 0aec000..a30fae5 100644
--- a/gcc/gimple-low.c
+++ b/gcc/gimple-low.c
@@ -485,7 +485,9 @@ lower_try_catch (gimple_stmt_iterator *gsi, struct 
lower_data *data)
         so we just ignore EH_FILTER_TYPES and assume that we might
         throw an exception which doesn't match.  */
       data->cannot_fallthru = false;
-      lower_sequence (gimple_eh_filter_failure_ptr (gsi_stmt (i)), data);
+      lower_sequence (gimple_eh_filter_failure_ptr (
+                       as_a <geh_filter *> (gsi_stmt (i))),
+                     data);
       if (!data->cannot_fallthru)
        cannot_fallthru = false;
       break;
@@ -546,7 +548,8 @@ gimple_try_catch_may_fallthru (gtry *stmt)
         will throw an exception which matches EH_FILTER_TYPES or not,
         so we just ignore EH_FILTER_TYPES and assume that we might
         throw an exception which doesn't match.  */
-      return gimple_seq_may_fallthru (gimple_eh_filter_failure (gsi_stmt (i)));
+      return gimple_seq_may_fallthru (gimple_eh_filter_failure (
+                                       as_a <geh_filter *> (gsi_stmt (i))));
 
     default:
       /* This case represents statements to be executed when an
diff --git a/gcc/gimple-walk.c b/gcc/gimple-walk.c
index 1ba48c1..767e584 100644
--- a/gcc/gimple-walk.c
+++ b/gcc/gimple-walk.c
@@ -293,8 +293,8 @@ walk_gimple_op (gimple stmt, walk_tree_fn callback_op,
       break;
 
     case GIMPLE_EH_FILTER:
-      ret = walk_tree (gimple_eh_filter_types_ptr (stmt), callback_op, wi,
-                      pset);
+      ret = walk_tree (gimple_eh_filter_types_ptr (as_a <geh_filter *> (stmt)),
+                      callback_op, wi, pset);
       if (ret)
        return ret;
       break;
@@ -589,8 +589,9 @@ walk_gimple_stmt (gimple_stmt_iterator *gsi, walk_stmt_fn 
callback_stmt,
       break;
 
     case GIMPLE_EH_FILTER:
-      ret = walk_gimple_seq_mod (gimple_eh_filter_failure_ptr (stmt), 
callback_stmt,
-                            callback_op, wi);
+      ret = walk_gimple_seq_mod (gimple_eh_filter_failure_ptr (
+                                  as_a <geh_filter *> (stmt)),
+                                callback_stmt, callback_op, wi);
       if (ret)
        return wi->callback_result;
       break;
diff --git a/gcc/gimple.h b/gcc/gimple.h
index 4e86476..0b09165 100644
--- a/gcc/gimple.h
+++ b/gcc/gimple.h
@@ -3535,25 +3535,21 @@ gimple_catch_set_handler (gcatch *catch_stmt, 
gimple_seq handler)
 }
 
 
-/* Return the types handled by GIMPLE_EH_FILTER statement GS.  */
+/* Return the types handled by GIMPLE_EH_FILTER statement EH_FILTER_STMT.  */
 
 static inline tree
-gimple_eh_filter_types (const_gimple gs)
+gimple_eh_filter_types (const geh_filter *eh_filter_stmt)
 {
-  const geh_filter *eh_filter_stmt =
-    as_a <const geh_filter *> (gs);
   return eh_filter_stmt->types;
 }
 
 
 /* Return a pointer to the types handled by GIMPLE_EH_FILTER statement
-   GS.  */
+   EH_FILTER_STMT.  */
 
 static inline tree *
-gimple_eh_filter_types_ptr (gimple gs)
+gimple_eh_filter_types_ptr (geh_filter *eh_filter_stmt)
 {
-  geh_filter *eh_filter_stmt =
-    as_a <geh_filter *> (gs);
   return &eh_filter_stmt->types;
 }
 
@@ -3562,10 +3558,8 @@ gimple_eh_filter_types_ptr (gimple gs)
    GIMPLE_EH_FILTER statement fails.  */
 
 static inline gimple_seq *
-gimple_eh_filter_failure_ptr (gimple gs)
+gimple_eh_filter_failure_ptr (geh_filter *eh_filter_stmt)
 {
-  geh_filter *eh_filter_stmt =
-    as_a <geh_filter *> (gs);
   return &eh_filter_stmt->failure;
 }
 
@@ -3574,7 +3568,7 @@ gimple_eh_filter_failure_ptr (gimple gs)
    statement fails.  */
 
 static inline gimple_seq
-gimple_eh_filter_failure (gimple gs)
+gimple_eh_filter_failure (geh_filter *gs)
 {
   return *gimple_eh_filter_failure_ptr (gs);
 }
diff --git a/gcc/omp-low.c b/gcc/omp-low.c
index 6e0db88..b411e64 100644
--- a/gcc/omp-low.c
+++ b/gcc/omp-low.c
@@ -10548,7 +10548,8 @@ lower_omp_1 (gimple_stmt_iterator *gsi_p, omp_context 
*ctx)
       lower_omp (gimple_catch_handler_ptr (as_a <gcatch *> (stmt)), ctx);
       break;
     case GIMPLE_EH_FILTER:
-      lower_omp (gimple_eh_filter_failure_ptr (stmt), ctx);
+      lower_omp (gimple_eh_filter_failure_ptr (as_a <geh_filter *> (stmt)),
+                ctx);
       break;
     case GIMPLE_TRY:
       {
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index ee3432d..b0df8b6 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -4688,7 +4688,8 @@ verify_gimple_in_seq_2 (gimple_seq stmts)
          break;
 
        case GIMPLE_EH_FILTER:
-         err |= verify_gimple_in_seq_2 (gimple_eh_filter_failure (stmt));
+         err |= verify_gimple_in_seq_2 (gimple_eh_filter_failure (
+                                          as_a <geh_filter *> (stmt)));
          break;
 
        case GIMPLE_EH_ELSE:
@@ -8438,7 +8439,8 @@ do_warn_unused_result (gimple_seq seq)
                                   as_a <gcatch *> (g)));
          break;
        case GIMPLE_EH_FILTER:
-         do_warn_unused_result (gimple_eh_filter_failure (g));
+         do_warn_unused_result (gimple_eh_filter_failure (
+                                  as_a <geh_filter *> (g)));
          break;
 
        case GIMPLE_CALL:
diff --git a/gcc/tree-eh.c b/gcc/tree-eh.c
index 77fb9a2..4974051 100644
--- a/gcc/tree-eh.c
+++ b/gcc/tree-eh.c
@@ -283,7 +283,9 @@ collect_finally_tree (gimple stmt, gtry *region)
       break;
 
     case GIMPLE_EH_FILTER:
-      collect_finally_tree_1 (gimple_eh_filter_failure (stmt), region);
+      collect_finally_tree_1 (gimple_eh_filter_failure  (
+                               as_a <geh_filter *> (stmt)),
+                             region);
       break;
 
     case GIMPLE_EH_ELSE:
@@ -546,7 +548,9 @@ replace_goto_queue_1 (gimple stmt, struct leh_tf_state *tf,
                                    tf);
       break;
     case GIMPLE_EH_FILTER:
-      replace_goto_queue_stmt_list (gimple_eh_filter_failure_ptr (stmt), tf);
+      replace_goto_queue_stmt_list (gimple_eh_filter_failure_ptr (
+                                     as_a <geh_filter *> (stmt)),
+                                   tf);
       break;
     case GIMPLE_EH_ELSE:
       {
@@ -1849,10 +1853,11 @@ lower_eh_filter (struct leh_state *state, gtry *tp)
 {
   struct leh_state this_state = *state;
   eh_region this_region = NULL;
-  gimple inner, x;
+  geh_filter *inner;
+  gimple x;
   gimple_seq new_seq;
 
-  inner = gimple_seq_first_stmt (gimple_try_cleanup (tp));
+  inner = as_a <geh_filter *> (gimple_seq_first_stmt (gimple_try_cleanup 
(tp)));
 
   if (flag_exceptions)
     {
@@ -3109,7 +3114,7 @@ refactor_eh_r (gimple_seq seq)
            refactor_eh_r (gimple_catch_handler (as_a <gcatch *> (one)));
            break;
          case GIMPLE_EH_FILTER:
-           refactor_eh_r (gimple_eh_filter_failure (one));
+           refactor_eh_r (gimple_eh_filter_failure (as_a <geh_filter *> 
(one)));
            break;
          case GIMPLE_EH_ELSE:
            {
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index eceed15..9cd25c6 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -1354,8 +1354,12 @@ remap_gimple_stmt (gimple stmt, copy_body_data *id)
          break;
 
        case GIMPLE_EH_FILTER:
-         s1 = remap_gimple_seq (gimple_eh_filter_failure (stmt), id);
-         copy = gimple_build_eh_filter (gimple_eh_filter_types (stmt), s1);
+         {
+           geh_filter *filter_stmt = as_a <geh_filter *> (stmt);
+           s1 = remap_gimple_seq (gimple_eh_filter_failure (filter_stmt), id);
+           copy = gimple_build_eh_filter (gimple_eh_filter_types (filter_stmt),
+                                          s1);
+         }
          break;
 
        case GIMPLE_TRY:
@@ -4030,7 +4034,9 @@ estimate_num_insns (gimple stmt, eni_weights *weights)
               weights);
 
     case GIMPLE_EH_FILTER:
-      return estimate_num_insns_seq (gimple_eh_filter_failure (stmt), weights);
+      return estimate_num_insns_seq (gimple_eh_filter_failure (
+                                      as_a <geh_filter *> (stmt)),
+                                    weights);
 
     case GIMPLE_CATCH:
       return estimate_num_insns_seq (gimple_catch_handler (
-- 
1.7.11.7

Reply via email to