------- Comment #8 from hutchinsonandy at aim dot com 2008-03-15 23:40 ------- This appear to be same bug where combine is erroneously assuming all DF register references are to different instructions. So it tries combining instructions with themselves and stuff gets lost.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35519 The above testcase still fails with gcc version 4.4.0 20080305. However, with patch from PR35519 it produces correct code: 23 /* prologue: function */ 24 /* frame size = 0 */ 25 .LM2: 26 0000 2BE0 ldi r18,lo8(11) 27 0002 30E0 ldi r19,hi8(11) 28 0004 40E0 ldi r20,hlo8(11) 29 0006 50E0 ldi r21,hhi8(11) 30 0008 0E94 0000 call __mulsi3 31 .LVL1: 32 /* epilogue start */ 33 .LM3: 34 000c 0895 ret -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34916