[gimple-classes, committed 37/44] ipa-split.c: Use gassign
David Malcolm
dmalcolm@redhat.com
Thu Nov 6 14:37:00 GMT 2014
gcc/ChangeLog.gimple-classes:
* ipa-split.c (find_return_bb): Eliminate check for GIMPLE_ASSIGN
since this is covered by gimple_assign_single_p, using the latter
to introduce local gassign * "assign_stmt", using it in place
of "stmt" for typesafety.
(find_retval): Add a checked cast.
(split_function): Replace check for GIMPLE_ASSIGN with a dyn_cast,
introducing local "assign_stmt" and using it in place of
gsi_stmt (bsi) for typesafety.
---
gcc/ChangeLog.gimple-classes | 11 +++++++++++
gcc/ipa-split.c | 28 +++++++++++++++-------------
2 files changed, 26 insertions(+), 13 deletions(-)
diff --git a/gcc/ChangeLog.gimple-classes b/gcc/ChangeLog.gimple-classes
index e4d85b2..08f045d 100644
--- a/gcc/ChangeLog.gimple-classes
+++ b/gcc/ChangeLog.gimple-classes
@@ -1,3 +1,14 @@
+2014-11-05 David Malcolm <dmalcolm@redhat.com>
+
+ * ipa-split.c (find_return_bb): Eliminate check for GIMPLE_ASSIGN
+ since this is covered by gimple_assign_single_p, using the latter
+ to introduce local gassign * "assign_stmt", using it in place
+ of "stmt" for typesafety.
+ (find_retval): Add a checked cast.
+ (split_function): Replace check for GIMPLE_ASSIGN with a dyn_cast,
+ introducing local "assign_stmt" and using it in place of
+ gsi_stmt (bsi) for typesafety.
+
2014-11-04 David Malcolm <dmalcolm@redhat.com>
* cfgexpand.c (add_scope_conflicts_1): Add checked cast.
diff --git a/gcc/ipa-split.c b/gcc/ipa-split.c
index ed5c1a7..4801d7f 100644
--- a/gcc/ipa-split.c
+++ b/gcc/ipa-split.c
@@ -704,6 +704,7 @@ find_return_bb (void)
gimple_stmt_iterator bsi;
bool found_return = false;
tree retval = NULL_TREE;
+ gassign *assign_stmt;
if (!single_pred_p (EXIT_BLOCK_PTR_FOR_FN (cfun)))
return return_bb;
@@ -716,13 +717,13 @@ find_return_bb (void)
|| is_gimple_debug (stmt)
|| gimple_clobber_p (stmt))
;
- else if (gimple_code (stmt) == GIMPLE_ASSIGN
- && found_return
- && gimple_assign_single_p (stmt)
- && (auto_var_in_fn_p (gimple_assign_rhs1 (stmt),
+ else if (found_return
+ && (assign_stmt = gimple_assign_single_p (stmt))
+ && (auto_var_in_fn_p (gimple_assign_rhs1 (assign_stmt),
current_function_decl)
- || is_gimple_min_invariant (gimple_assign_rhs1 (stmt)))
- && retval == gimple_assign_lhs (stmt))
+ || is_gimple_min_invariant (
+ gimple_assign_rhs1 (assign_stmt)))
+ && retval == gimple_assign_lhs (assign_stmt))
;
else if (greturn *return_stmt = dyn_cast <greturn *> (stmt))
{
@@ -749,7 +750,7 @@ find_retval (basic_block return_bb)
return gimple_return_retval (return_stmt);
else if (gimple_code (gsi_stmt (bsi)) == GIMPLE_ASSIGN
&& !gimple_clobber_p (gsi_stmt (bsi)))
- return gimple_assign_rhs1 (gsi_stmt (bsi));
+ return gimple_assign_rhs1 (as_a <gassign *> (gsi_stmt (bsi)));
return NULL;
}
@@ -1471,12 +1472,13 @@ split_function (struct split_point *split_point)
gimple_return_set_retval (return_stmt, retval);
break;
}
- else if (gimple_code (gsi_stmt (bsi)) == GIMPLE_ASSIGN
- && !gimple_clobber_p (gsi_stmt (bsi)))
- {
- gimple_assign_set_rhs1 (gsi_stmt (bsi), retval);
- break;
- }
+ else if (gassign *assign_stmt =
+ dyn_cast <gassign *> (gsi_stmt (bsi)))
+ if (!gimple_clobber_p (assign_stmt))
+ {
+ gimple_assign_set_rhs1 (assign_stmt, retval);
+ break;
+ }
update_stmt (gsi_stmt (bsi));
}
}
--
1.7.11.7
More information about the Gcc-patches
mailing list