Index: ChangeLog
===================================================================
--- ChangeLog	(revision 161655)
+++ ChangeLog	(working copy)
@@ -1,3 +1,9 @@
+2010-07-01  Bernd Schmidt  <bernds@codesourcery.com>
+
+	PR target/44727
+	* config/i386/i386.md (peephole2 for arithmetic ops with memory):
+	Make sure operand 0 dies.
+
 2010-07-01  Richard Guenther  <rguenther@suse.de>
 
 	PR middle-end/42834
Index: config/i386/i386.md
===================================================================
--- config/i386/i386.md	(revision 161655)
+++ config/i386/i386.md	(working copy)
@@ -17575,6 +17575,8 @@ (define_peephole2
 	    || GET_MODE (operands[0]) == HImode))
        || GET_MODE (operands[0]) == SImode
        || (TARGET_64BIT && GET_MODE (operands[0]) == DImode))
+   && (rtx_equal_p (operands[0], operands[3])
+       || peep2_reg_dead_p (2, operands[0]))
    /* We reorder load and the shift.  */
    && !reg_overlap_mentioned_p (operands[0], operands[4])"
   [(set (match_dup 5) (match_dup 4))
