This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[gimple-classes, committed 27/44] tree-ssa-dce.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 09:32:03 -0500
- Subject: [gimple-classes, committed 27/44] tree-ssa-dce.c: Use gassign
- Authentication-results: sourceware.org; auth=none
- References: <1415284340-14186-1-git-send-email-dmalcolm at redhat dot com>
gcc/ChangeLog.gimple-classes:
* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Within
case GIMPLE_ASSIGN, introduce local "assign_stmt" and use in place
of "stmt" for typesafety.
(mark_all_reaching_defs_necessary_1): Add a checked cast.
(propagate_necessity): Likewise.
(remove_dead_stmt): Introduce local gassign * "assign_stmt" from
result of gimple_assign_single_p and use it in place of "stmt" for
typesafety.
---
gcc/ChangeLog.gimple-classes | 11 +++++++++++
gcc/tree-ssa-dce.c | 22 +++++++++++++---------
2 files changed, 24 insertions(+), 9 deletions(-)
diff --git a/gcc/ChangeLog.gimple-classes b/gcc/ChangeLog.gimple-classes
index 19a8295..8230179 100644
--- a/gcc/ChangeLog.gimple-classes
+++ b/gcc/ChangeLog.gimple-classes
@@ -1,5 +1,16 @@
2014-11-03 David Malcolm <dmalcolm@redhat.com>
+ * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Within
+ case GIMPLE_ASSIGN, introduce local "assign_stmt" and use in place
+ of "stmt" for typesafety.
+ (mark_all_reaching_defs_necessary_1): Add a checked cast.
+ (propagate_necessity): Likewise.
+ (remove_dead_stmt): Introduce local gassign * "assign_stmt" from
+ result of gimple_assign_single_p and use it in place of "stmt" for
+ typesafety.
+
+2014-11-03 David Malcolm <dmalcolm@redhat.com>
+
* tree-ssa-copy.c (stmt_may_generate_copy): Replace check against
GIMPLE_ASSIGN with a dyn_cast, introducing local gassign *
"assign_stmt", using it in place of "stmt" for typesafety.
diff --git a/gcc/tree-ssa-dce.c b/gcc/tree-ssa-dce.c
index 20a4e40..bf2cae6 100644
--- a/gcc/tree-ssa-dce.c
+++ b/gcc/tree-ssa-dce.c
@@ -289,9 +289,12 @@ mark_stmt_if_obviously_necessary (gimple stmt, bool aggressive)
break;
case GIMPLE_ASSIGN:
- if (TREE_CODE (gimple_assign_lhs (stmt)) == SSA_NAME
- && TREE_CLOBBER_P (gimple_assign_rhs1 (stmt)))
- return;
+ {
+ gassign *assign_stmt = as_a <gassign *> (stmt);
+ if (TREE_CODE (gimple_assign_lhs (assign_stmt)) == SSA_NAME
+ && TREE_CLOBBER_P (gimple_assign_rhs1 (assign_stmt)))
+ return;
+ }
break;
default:
@@ -570,7 +573,7 @@ mark_all_reaching_defs_necessary_1 (ao_ref *ref ATTRIBUTE_UNUSED,
if (!chain_ovfl
&& gimple_assign_single_p (def_stmt))
{
- tree lhs = gimple_assign_lhs (def_stmt);
+ tree lhs = gimple_assign_lhs (as_a <gassign *> (def_stmt));
if (!ref_may_be_aliased (lhs))
return false;
}
@@ -868,7 +871,7 @@ propagate_necessity (bool aggressive)
{
tree rhs;
/* If this is a load mark things necessary. */
- rhs = gimple_assign_rhs1 (stmt);
+ rhs = gimple_assign_rhs1 (as_a <gassign *> (stmt));
if (TREE_CODE (rhs) != SSA_NAME
&& !is_gimple_min_invariant (rhs)
&& TREE_CODE (rhs) != CONSTRUCTOR)
@@ -1125,18 +1128,19 @@ remove_dead_stmt (gimple_stmt_iterator *i, basic_block bb)
/* If this is a store into a variable that is being optimized away,
add a debug bind stmt if possible. */
+ gassign *assign_stmt;
if (MAY_HAVE_DEBUG_STMTS
- && gimple_assign_single_p (stmt)
- && is_gimple_val (gimple_assign_rhs1 (stmt)))
+ && (assign_stmt = gimple_assign_single_p (stmt))
+ && is_gimple_val (gimple_assign_rhs1 (assign_stmt)))
{
- tree lhs = gimple_assign_lhs (stmt);
+ tree lhs = gimple_assign_lhs (assign_stmt);
if ((TREE_CODE (lhs) == VAR_DECL || TREE_CODE (lhs) == PARM_DECL)
&& !DECL_IGNORED_P (lhs)
&& is_gimple_reg_type (TREE_TYPE (lhs))
&& !is_global_var (lhs)
&& !DECL_HAS_VALUE_EXPR_P (lhs))
{
- tree rhs = gimple_assign_rhs1 (stmt);
+ tree rhs = gimple_assign_rhs1 (assign_stmt);
gdebug *note
= gimple_build_debug_bind (lhs, unshare_expr (rhs), stmt);
gsi_insert_after (i, note, GSI_SAME_STMT);
--
1.7.11.7