diff options
author | Martin Jambor <mjambor@suse.cz> | 2022-12-14 00:33:06 +0100 |
---|---|---|
committer | Martin Jambor <mjambor@suse.cz> | 2022-12-14 00:58:37 +0100 |
commit | 8a263116d4375892bf67ceaaf2575935cd99edd0 (patch) | |
tree | 67aed72dc49c41e69ae48acb54274b42a9df4967 | |
parent | f2cf4c6121d2b350bb66ed6763e81b77a585846d (diff) |
ipa: Avoid looking for IPA-SRA replacements where there are none
While modifying the code, I realized that we do look into statements
even when there are no replacements. This patch adds the necessary
early bail-outs to avoid that.
ipa_param_body_adjustments::modify_call_stmt cannot have the same at
the very beginning because calls can still contain otherwise removed
parameters that need to be removed from the statements too.
gcc/ChangeLog:
2022-11-11 Martin Jambor <mjambor@suse.cz>
* ipa-param-manipulation.cc
(ipa_param_body_adjustments::modify_expression): Bail out early if
there are no replacements.
(ipa_param_body_adjustments::modify_assignment): Likewise.
-rw-r--r-- | gcc/ipa-param-manipulation.cc | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/ipa-param-manipulation.cc b/gcc/ipa-param-manipulation.cc index e92cfc0b6d5..da19d64cbce 100644 --- a/gcc/ipa-param-manipulation.cc +++ b/gcc/ipa-param-manipulation.cc @@ -1762,6 +1762,8 @@ ipa_param_body_adjustments::modify_expression (tree *expr_p, bool convert) { tree expr = *expr_p; + if (m_replacements.is_empty ()) + return false; if (TREE_CODE (expr) == BIT_FIELD_REF || TREE_CODE (expr) == IMAGPART_EXPR || TREE_CODE (expr) == REALPART_EXPR) @@ -1809,7 +1811,7 @@ ipa_param_body_adjustments::modify_assignment (gimple *stmt, tree *lhs_p, *rhs_p; bool any; - if (!gimple_assign_single_p (stmt)) + if (m_replacements.is_empty () || !gimple_assign_single_p (stmt)) return false; rhs_p = gimple_assign_rhs1_ptr (stmt); |