diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d36c585e27789cfd8d7bf09d928343f78aa71a42..f09065965e9a544d7fb23dfbedc2edae0b1ea741 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index e361fd707ab7b79f8745a16c5c2d703904c4991c..1714d50df9f40d37a9532a9629746ffc5501cc0b 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -17575,6 +17575,8 @@ || 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))