On Wed, 20 Aug 2014, Richard Biener wrote:
- if (stmt != use_stmt
- && ref_maybe_used_by_stmt_p (use_stmt, gimple_assign_lhs
(stmt)))
- return;
-
I don't see how you can remove this code?
dse_possible_dead_store_p already tests ref_maybe_used_by_stmt_p and
thus cannot return true with such a use_stmt, as far as I can see. As I
said, bootstrap+testsuite with an assert instead of 'return' didn't turn
up anything. I could keep it as a gcc_checking_assert (with a slight
update to the comment) if you like. Or did I miss a path in
dse_possible_dead_store_p?
Yes, the one that early returns from the operand_equal_p check.
You might want to do some svn blaming to see what testcases
were added with the above code (and the code surrounding it).
I'm not sure either... so if it passes bootstrap & regtest it must be
dead code... (well...)
The early return operand_equal_p has use_stmt == stmt, so it doesn't even
reach the call to ref_maybe_used_by_stmt_p I am removing.
svn blame leads me to r132899 (gcc.c-torture/execute/pr35472.c)
and before that to r131101 (gcc.c-torture/execute/20071219-1.c)
Both testcases are still in the testsuite and passed. The rest of the code
has changed quite a bit since then, it isn't that surprising if some test
becomes redundant. But if it makes you nervous, we could keep it as a
checking_assert, the cost should be negligible...
--
Marc Glisse