Another interesting case (-Os used):
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
int foo (int x)
{
int i= x;
do {
x *= 2;
} while (--i);
return x;
}
Result with 3.3.4:
~~~~~~~~~~~~~~~~~~
foo:
/* prologue: frame size=0 */
/* prologue end (size=0) */
mov r18,r24
mov r19,r25
.L2:
add r24,r24
adc r25,r25
subi r18,lo8(-(-1))
sbci r19,hi8(-(-1))
brne .L2
/* epilogue: frame size=0 */
ret
Result with 4.0:
~~~~~~~~~~~~~~~~
foo:
/* prologue: frame size=0 */
/* prologue end (size=0) */
ldi r18,lo8(0)
ldi r19,hi8(0)
clr r20
clr r21
sub r20,r24
sbc r21,r25
.L2:
add r24,r24
adc r25,r25
subi r18,lo8(-(-1))
sbci r19,hi8(-(-1))
cp r18,r20
cpc r19,r21
brne .L2
/* epilogue: frame size=0 */
ret
_______________________________________________
avr-gcc-list mailing list
address@hidden
http://www.avr1.org/mailman/listinfo/avr-gcc-list