ipa: Avoid looking for IPA-SRA replacements where there are none
authorMartin Jambor <mjambor@suse.cz>
Tue, 13 Dec 2022 23:33:06 +0000 (00:33 +0100)
committerMartin Jambor <mjambor@suse.cz>
Tue, 13 Dec 2022 23:58:37 +0000 (00:58 +0100)
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.

gcc/ipa-param-manipulation.cc

index e92cfc0..da19d64 100644 (file)
@@ -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);