https://gcc.gnu.org/g:0595867e0c239d74dea52dbceaca9726b683713a

commit r16-8883-g0595867e0c239d74dea52dbceaca9726b683713a
Author: Richard Biener <[email protected]>
Date:   Mon May 4 11:02:01 2026 +0200

    middle-end/125146 - fold_stmt fails to release SSA names
    
    When match-and-simplify simplification fails we have to release
    eventually pushed stmts.
    
            PR middle-end/125146
            * gimple-fold.cc (fold_stmt_1): Discard stmts in seq
            after failed gimple_simplify as well.
    
    (cherry picked from commit 71f161d8c5dc2cba7e6a74e87a1b7b86000036e0)

Diff:
---
 gcc/gimple-fold.cc | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/gcc/gimple-fold.cc b/gcc/gimple-fold.cc
index e9019e2c7bd6..1af0d5254285 100644
--- a/gcc/gimple-fold.cc
+++ b/gcc/gimple-fold.cc
@@ -6850,14 +6850,12 @@ fold_stmt_1 (gimple_stmt_iterator *gsi, bool inplace, 
tree (*valueize) (tree),
       gimple_seq seq = NULL;
       gimple_match_op res_op;
       if (gimple_simplify (stmt, &res_op, inplace ? NULL : &seq,
-                          valueize, valueize))
-       {
-         if (replace_stmt_with_simplification (gsi, &res_op, &seq, inplace,
-                                               dce_worklist))
-           changed = true;
-         else
-           gimple_seq_discard (seq);
-       }
+                          valueize, valueize)
+         && replace_stmt_with_simplification (gsi, &res_op, &seq, inplace,
+                                              dce_worklist))
+       changed = true;
+      else
+       gimple_seq_discard (seq);
     }
 
   stmt = gsi_stmt (*gsi);

Reply via email to