http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56854
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-04-08
14:15:17 UTC ---
So like this?
Reducing testcase now...
--- tree-ssa-forwprop.c.jj12013-02-25 23:51:21.000000000 +0100
+++ tree-ssa-forwprop.c2013-04-08 16:12:37.908611768 +0200
@@ -826,7 +826,11 @@ forward_propagate_addr_expr_1 (tree name
&& integer_zerop (TREE_OPERAND (lhs, 1))
&& useless_type_conversion_p
(TREE_TYPE (TREE_OPERAND (def_rhs, 0)),
- TREE_TYPE (gimple_assign_rhs1 (use_stmt))))
+ TREE_TYPE (gimple_assign_rhs1 (use_stmt)))
+ /* Don't forward anything into clobber stmts if it would result
+ in the lhs no longer being a MEM_REF. */
+ && (!gimple_clobber_p (use_stmt)
+ || TREE_CODE (TREE_OPERAND (def_rhs, 0)) == MEM_REF))
{
tree *def_rhs_basep = &TREE_OPERAND (def_rhs, 0);
tree new_offset, new_base, saved, new_lhs;