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; +}
