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.
Bootstrapped & regression-tested on x86_64-linux-gnu. OK to install?
Richard
gcc/
* gimple-ssa-backprop.cc (backprop::execute): Don't try to delete
default definitions.
gcc/testsuite/
* gcc.dg/torture/pr125872.c: New test.
---
gcc/gimple-ssa-backprop.cc | 1 +
gcc/testsuite/gcc.dg/torture/pr125872.c | 7 +++++++
2 files changed, 8 insertions(+)
create mode 100644 gcc/testsuite/gcc.dg/torture/pr125872.c
diff --git a/gcc/gimple-ssa-backprop.cc b/gcc/gimple-ssa-backprop.cc
index e101430bb8e..a95e2f95c5f 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 00000000000..5e5588f7d33
--- /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;
+}
--
2.54.0