https://gcc.gnu.org/g:295e83641d0db2b9bce71447d9d4951317e8e0ad

commit r17-1664-g295e83641d0db2b9bce71447d9d4951317e8e0ad
Author: Richard Sandiford <[email protected]>
Date:   Thu Jun 18 16:54:08 2026 +0100

    backprop: Don't try to delete default defs [PR125872]
    
    In this PR, -fno-tree-dce meant that backprop was presented with code
    that was completely dead.  The pass's internal DCE then tried to delete
    the function parameter's definition.
    
    gcc/
            PR tree-optimization/125872
            * gimple-ssa-backprop.cc (backprop::execute): Don't try to delete
            default definitions.
    
    gcc/testsuite/
            PR tree-optimization/125872
            * gcc.dg/torture/pr125872.c: New test.

Diff:
---
 gcc/gimple-ssa-backprop.cc              | 1 +
 gcc/testsuite/gcc.dg/torture/pr125872.c | 7 +++++++
 2 files changed, 8 insertions(+)

diff --git a/gcc/gimple-ssa-backprop.cc b/gcc/gimple-ssa-backprop.cc
index e101430bb8e1..a95e2f95c5f6 100644
--- a/gcc/gimple-ssa-backprop.cc
+++ b/gcc/gimple-ssa-backprop.cc
@@ -1137,6 +1137,7 @@ backprop::execute ()
   for (unsigned int i = 0; i < m_vars.length (); ++i)
     if (var_info *v = m_vars[i])
       if (TREE_CODE (v->new_value) == SSA_NAME
+         && !SSA_NAME_IS_DEFAULT_DEF (v->new_value)
          && has_zero_uses (v->new_value)
          && bitmap_set_bit (deleted_vars, SSA_NAME_VERSION (v->new_value)))
        {
diff --git a/gcc/testsuite/gcc.dg/torture/pr125872.c 
b/gcc/testsuite/gcc.dg/torture/pr125872.c
new file mode 100644
index 000000000000..5e5588f7d33f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr125872.c
@@ -0,0 +1,7 @@
+/* { dg-additional-options "-fno-tree-dce" } */
+
+void
+foo(float f)
+{
+  for(;;) f *= (char)255;
+}

Reply via email to