]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ipa-sra: Release dead LHS SSA_NAME when removing it (PR 99951)
authorMartin Jambor <mjambor@suse.cz>
Tue, 27 Apr 2021 11:46:10 +0000 (13:46 +0200)
committerMartin Jambor <mjambor@suse.cz>
Tue, 27 Apr 2021 11:46:10 +0000 (13:46 +0200)
When IPA-SRA removes an SSA_NAME from a LHS of a call statement
because it is not necessary, it does not release it.  This patch fixes
that.

gcc/ChangeLog:

2021-04-08  Martin Jambor  <mjambor@suse.cz>

PR ipa/99951
* ipa-param-manipulation.c (ipa_param_adjustments::modify_call):
If removing a call statement LHS SSA name, release it.

gcc/ipa-param-manipulation.c

index 132bb24f76aa0ef4e9306cc13666dd6e1be187fe..1d1e64f546a7685537f22993599d32987ade2b08 100644 (file)
@@ -856,6 +856,7 @@ ipa_param_adjustments::modify_call (gcall *stmt,
 
   gcall *new_stmt = gimple_build_call_vec (callee_decl, vargs);
 
+  tree ssa_to_remove = NULL;
   if (tree lhs = gimple_call_lhs (stmt))
     {
       if (!m_skip_return)
@@ -880,6 +881,7 @@ ipa_param_adjustments::modify_call (gcall *stmt,
                }
              update_stmt (using_stmt);
            }
+         ssa_to_remove = lhs;
        }
     }
 
@@ -898,6 +900,8 @@ ipa_param_adjustments::modify_call (gcall *stmt,
       fprintf (dump_file, "\n");
     }
   gsi_replace (&gsi, new_stmt, true);
+  if (ssa_to_remove)
+    release_ssa_name (ssa_to_remove);
   if (update_references)
     do
       {