[gimple-classes, committed 3/6] tree-ssa-structalias.c: Use gassign
David Malcolm
dmalcolm@redhat.com
Fri Nov 7 15:26:00 GMT 2014
gcc/ChangeLog.gimple-classes:
* tree-ssa-structalias.c (find_func_aliases): Replace
is_gimple_assign with a dyn_cast, introducing local gassign *
"t_assign", using it in place of "t" for typesafety.
(find_func_clobbers): Add checked cast.
---
gcc/ChangeLog.gimple-classes | 7 +++++++
gcc/tree-ssa-structalias.c | 35 +++++++++++++++++++----------------
2 files changed, 26 insertions(+), 16 deletions(-)
diff --git a/gcc/ChangeLog.gimple-classes b/gcc/ChangeLog.gimple-classes
index a0e7c48..f43df63 100644
--- a/gcc/ChangeLog.gimple-classes
+++ b/gcc/ChangeLog.gimple-classes
@@ -1,5 +1,12 @@
2014-11-06 David Malcolm <dmalcolm@redhat.com>
+ * tree-ssa-structalias.c (find_func_aliases): Replace
+ is_gimple_assign with a dyn_cast, introducing local gassign *
+ "t_assign", using it in place of "t" for typesafety.
+ (find_func_clobbers): Add checked cast.
+
+2014-11-06 David Malcolm <dmalcolm@redhat.com>
+
* tree-ssa-strlen.c (find_equal_ptrs): Replace is_gimple_assign
with a dyn_cast, strengthening local "stmt" from gimple to
gassign *.
diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c
index e1f0e66..5d22752 100644
--- a/gcc/tree-ssa-structalias.c
+++ b/gcc/tree-ssa-structalias.c
@@ -4661,11 +4661,13 @@ find_func_aliases (struct function *fn, gimple origt)
/* Otherwise, just a regular assignment statement. Only care about
operations with pointer result, others are dealt with as escape
points if they have pointer operands. */
- else if (is_gimple_assign (t))
+ else if (gassign *t_assign = dyn_cast <gassign *> (t))
{
/* Otherwise, just a regular assignment statement. */
- tree lhsop = gimple_assign_lhs (t);
- tree rhsop = (gimple_num_ops (t) == 2) ? gimple_assign_rhs1 (t) : NULL;
+ tree lhsop = gimple_assign_lhs (t_assign);
+ tree rhsop = ((gimple_num_ops (t_assign) == 2)
+ ? gimple_assign_rhs1 (t_assign)
+ : NULL);
if (rhsop && TREE_CLOBBER_P (rhsop))
/* Ignore clobbers, they don't actually store anything into
@@ -4675,7 +4677,7 @@ find_func_aliases (struct function *fn, gimple origt)
do_structure_copy (lhsop, rhsop);
else
{
- enum tree_code code = gimple_assign_rhs_code (t);
+ enum tree_code code = gimple_assign_rhs_code (t_assign);
get_constraint_for (lhsop, &lhsc);
@@ -4684,20 +4686,21 @@ find_func_aliases (struct function *fn, gimple origt)
assume the value is not produced to transfer a pointer. */
;
else if (code == POINTER_PLUS_EXPR)
- get_constraint_for_ptr_offset (gimple_assign_rhs1 (t),
- gimple_assign_rhs2 (t), &rhsc);
+ get_constraint_for_ptr_offset (gimple_assign_rhs1 (t_assign),
+ gimple_assign_rhs2 (t_assign),
+ &rhsc);
else if (code == BIT_AND_EXPR
- && TREE_CODE (gimple_assign_rhs2 (t)) == INTEGER_CST)
+ && TREE_CODE (gimple_assign_rhs2 (t_assign)) == INTEGER_CST)
{
/* Aligning a pointer via a BIT_AND_EXPR is offsetting
the pointer. Handle it by offsetting it by UNKNOWN. */
- get_constraint_for_ptr_offset (gimple_assign_rhs1 (t),
+ get_constraint_for_ptr_offset (gimple_assign_rhs1 (t_assign),
NULL_TREE, &rhsc);
}
else if ((CONVERT_EXPR_CODE_P (code)
- && !(POINTER_TYPE_P (gimple_expr_type (t))
+ && !(POINTER_TYPE_P (gimple_expr_type (t_assign))
&& !POINTER_TYPE_P (TREE_TYPE (rhsop))))
- || gimple_assign_single_p (t))
+ || gimple_assign_single_p (t_assign))
get_constraint_for_rhs (rhsop, &rhsc);
else if (code == COND_EXPR)
{
@@ -4705,8 +4708,8 @@ find_func_aliases (struct function *fn, gimple origt)
auto_vec<ce_s, 2> tmp;
struct constraint_expr *rhsp;
unsigned i;
- get_constraint_for_rhs (gimple_assign_rhs2 (t), &rhsc);
- get_constraint_for_rhs (gimple_assign_rhs3 (t), &tmp);
+ get_constraint_for_rhs (gimple_assign_rhs2 (t_assign), &rhsc);
+ get_constraint_for_rhs (gimple_assign_rhs3 (t_assign), &tmp);
FOR_EACH_VEC_ELT (tmp, i, rhsp)
rhsc.safe_push (*rhsp);
}
@@ -4720,10 +4723,10 @@ find_func_aliases (struct function *fn, gimple origt)
auto_vec<ce_s, 4> tmp;
struct constraint_expr *rhsp;
unsigned i, j;
- get_constraint_for_rhs (gimple_assign_rhs1 (t), &rhsc);
- for (i = 2; i < gimple_num_ops (t); ++i)
+ get_constraint_for_rhs (gimple_assign_rhs1 (t_assign), &rhsc);
+ for (i = 2; i < gimple_num_ops (t_assign); ++i)
{
- get_constraint_for_rhs (gimple_op (t, i), &tmp);
+ get_constraint_for_rhs (gimple_op (t_assign, i), &tmp);
FOR_EACH_VEC_ELT (tmp, j, rhsp)
rhsc.safe_push (*rhsp);
tmp.truncate (0);
@@ -4898,7 +4901,7 @@ find_func_clobbers (struct function *fn, gimple origt)
&& gimple_return_retval (as_a <greturn *> (t)) != NULL_TREE))
{
tree rhs = (gimple_assign_single_p (t)
- ? gimple_assign_rhs1 (t)
+ ? gimple_assign_rhs1 (as_a <gassign *> (t))
: gimple_return_retval (as_a <greturn *> (t)));
tree tem = rhs;
while (handled_component_p (tem))
--
1.7.11.7
More information about the Gcc-patches
mailing list