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;