https://gcc.gnu.org/g:0b3133572edbd2b382e160ac78d7caf321f7f05b

commit r15-3647-g0b3133572edbd2b382e160ac78d7caf321f7f05b
Author: Andrew Pinski <quic_apin...@quicinc.com>
Date:   Fri Sep 13 20:27:32 2024 -0700

    vect: release defs of removed statement
    
    While trying to add use of simple_dce_from_worklist
    to the vectorizer so we don't need to run a full blown
    DCE pass after the vectorizer, there was a crash noticed
    due to a ssa name which has a stmt without a bb. This was
    due to not calling release_defs after the call to gsi_remove.
    
    Note the code to remove zero use statements should be able to
    remove once the use of simple_dce_from_worklist has been added.
    But in the meantime, fixing this bug will also improve memory
    usage and a few other things which look through all ssa names.
    
    gcc/ChangeLog:
    
            * tree-vect-loop.cc (optimize_mask_stores): Call release_defs
            after the call to gsi_remove with last argument of true.
    
    Signed-off-by: Andrew Pinski <quic_apin...@quicinc.com>

Diff:
---
 gcc/tree-vect-loop.cc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc
index cc15492f6a01..62c7f90779fa 100644
--- a/gcc/tree-vect-loop.cc
+++ b/gcc/tree-vect-loop.cc
@@ -12803,6 +12803,7 @@ optimize_mask_stores (class loop *loop)
                  if (has_zero_uses (lhs))
                    {
                      gsi_remove (&gsi_from, true);
+                     release_defs (stmt1);
                      continue;
                    }
                }

Reply via email to