http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49687
Eric Weddington <eric.weddington at atmel dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2011.07.14 18:45:17 Summary|AVR: Missed optimization |[4.6 Regression][avr] |for widening MUL |Missed optimization for | |widening MUL Ever Confirmed|0 |1 --- Comment #3 from Eric Weddington <eric.weddington at atmel dot com> 2011-07-14 18:45:17 UTC --- The test case results using GCC 4.3.3 (WinAVR 20100110) shows that the mul8_126 case is smaller: .global mul8_126 .type mul8_126, @function mul8_126: /* prologue: function */ /* frame size = 0 */ mov r18,r24 ; 2 *movqi/1 [length = 1] ldi r24,lo8(126) ; 6 *movqi/2 [length = 1] muls r18,r24 ; 7 mulqihi3 [length = 3] movw r18,r0 clr r1 movw r24,r18 ; 32 *movhi/1 [length = 1] /* epilogue start */ ret ; 30 return [length = 1] .size mul8_126, .-mul8_126 So this is a regression wrt to gcc 4.6.1. The case of mul8_155 shows the identical problem as for gcc 4.6.1.