This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[gimple-classes, committed 17/17] tree-ssa-propagate.c: Use gassign
- From: David Malcolm <dmalcolm at redhat dot com>
- To: gcc-patches at gcc dot gnu dot org
- Cc: David Malcolm <dmalcolm at redhat dot com>
- Date: Thu, 6 Nov 2014 19:59:31 -0500
- Subject: [gimple-classes, committed 17/17] tree-ssa-propagate.c: Use gassign
- Authentication-results: sourceware.org; auth=none
- References: <1415321971-19808-1-git-send-email-dmalcolm at redhat dot com>
gcc/ChangeLog.gimple-classes:
* tree-ssa-propagate.c
(substitute_and_fold_dom_walker::before_dom_children): Add checked
cast. Replace is_gimple_assign with a dyn_cast, introducing local
"assign_stmt" and using it in place of "stmt" for typesafety.
(may_propagate_copy_into_stmt): Add checked casts.
(propagate_tree_value_into_stmt): Add checked cast.
---
gcc/ChangeLog.gimple-classes | 9 +++++++++
gcc/tree-ssa-propagate.c | 26 ++++++++++++++------------
2 files changed, 23 insertions(+), 12 deletions(-)
diff --git a/gcc/ChangeLog.gimple-classes b/gcc/ChangeLog.gimple-classes
index 7975302..382bd3d 100644
--- a/gcc/ChangeLog.gimple-classes
+++ b/gcc/ChangeLog.gimple-classes
@@ -1,5 +1,14 @@
2014-11-06 David Malcolm <dmalcolm@redhat.com>
+ * tree-ssa-propagate.c
+ (substitute_and_fold_dom_walker::before_dom_children): Add checked
+ cast. Replace is_gimple_assign with a dyn_cast, introducing local
+ "assign_stmt" and using it in place of "stmt" for typesafety.
+ (may_propagate_copy_into_stmt): Add checked casts.
+ (propagate_tree_value_into_stmt): Add checked cast.
+
+2014-11-06 David Malcolm <dmalcolm@redhat.com>
+
* tree-ssa-pre.c (compute_avail): Within case GIMPLE_ASSIGN,
introduce local "assign_stmt" via an as_a and use it in place of
"stmt" for typesafety.
diff --git a/gcc/tree-ssa-propagate.c b/gcc/tree-ssa-propagate.c
index 478e8b9..ba677c9 100644
--- a/gcc/tree-ssa-propagate.c
+++ b/gcc/tree-ssa-propagate.c
@@ -1103,7 +1103,8 @@ substitute_and_fold_dom_walker::before_dom_children (basic_block bb)
afterwards. */
if (code == GIMPLE_ASSIGN
- && TREE_CODE (gimple_assign_rhs1 (stmt)) == ASSERT_EXPR)
+ && (TREE_CODE (gimple_assign_rhs1 (as_a <gassign *> (stmt)))
+ == ASSERT_EXPR))
continue;
/* No point propagating into a stmt we have a value for we
@@ -1164,15 +1165,15 @@ substitute_and_fold_dom_walker::before_dom_children (basic_block bb)
if (maybe_clean_or_replace_eh_stmt (old_stmt, stmt))
bitmap_set_bit (need_eh_cleanup, bb->index);
- if (is_gimple_assign (stmt)
- && (get_gimple_rhs_class (gimple_assign_rhs_code (stmt))
- == GIMPLE_SINGLE_RHS))
- {
- tree rhs = gimple_assign_rhs1 (stmt);
+ if (gassign *assign_stmt = dyn_cast <gassign *> (stmt))
+ if (get_gimple_rhs_class (gimple_assign_rhs_code (assign_stmt))
+ == GIMPLE_SINGLE_RHS)
+ {
+ tree rhs = gimple_assign_rhs1 (assign_stmt);
- if (TREE_CODE (rhs) == ADDR_EXPR)
- recompute_tree_invariant_for_addr_expr (rhs);
- }
+ if (TREE_CODE (rhs) == ADDR_EXPR)
+ recompute_tree_invariant_for_addr_expr (rhs);
+ }
/* Determine what needs to be done to update the SSA form. */
update_stmt (stmt);
@@ -1324,7 +1325,8 @@ may_propagate_copy_into_stmt (gimple dest, tree orig)
for the expression, so we delegate to may_propagate_copy. */
if (gimple_assign_single_p (dest))
- return may_propagate_copy (gimple_assign_rhs1 (dest), orig);
+ return may_propagate_copy (gimple_assign_rhs1 (as_a <gassign *> (dest)),
+ orig);
else if (gswitch *dest_swtch = dyn_cast <gswitch *> (dest))
return may_propagate_copy (gimple_switch_index (dest_swtch), orig);
@@ -1338,7 +1340,7 @@ may_propagate_copy_into_stmt (gimple dest, tree orig)
return false;
if (is_gimple_assign (dest))
- type_d = TREE_TYPE (gimple_assign_lhs (dest));
+ type_d = TREE_TYPE (gimple_assign_lhs (as_a <gassign *> (dest)));
else if (gimple_code (dest) == GIMPLE_COND)
type_d = boolean_type_node;
else if (is_gimple_call (dest)
@@ -1450,7 +1452,7 @@ propagate_tree_value_into_stmt (gimple_stmt_iterator *gsi, tree val)
{
tree expr = NULL_TREE;
if (gimple_assign_single_p (stmt))
- expr = gimple_assign_rhs1 (stmt);
+ expr = gimple_assign_rhs1 (as_a <gassign *> (stmt));
propagate_tree_value (&expr, val);
gimple_assign_set_rhs_from_tree (gsi, expr);
}
--
1.7.11.7