Hi, wrong code by avr-gcc 4.1.1:
Program: ~~~~~~~ /* This program is compiled as endless loop: condition `c1 != 0' is not tested. In original (real) program there was an another error: in conditional expression based on c1 and c2 inside the loops (here this is removed). Compiler: avr-gcc 4.1.1 Options: -W -Wall -Os -S */ void foo (const char *s1, const char *s2); int main () { unsigned char c1, c2; char s1[2] = "."; char s2[2] = "."; for (c1 = 1; c1; c1++) { for (c2 = 1; c2; c2++) { s1[0] = c1; s2[0] = c2; foo (s1, s2); } } return 0; } Result: ~~~~~~ ... main: /* prologue: frame size=4 */ ldi r28,lo8(__stack - 4) ldi r29,hi8(__stack - 4) out __SP_H__,r29 out __SP_L__,r28 /* prologue end (size=4) */ lds r24,.LC0 lds r25,(.LC0)+1 std Y+2,r25 std Y+1,r24 std Y+4,r25 std Y+3,r24 ldi r16,lo8(1) rjmp .L2 .L3: std Y+1,r16 std Y+3,r17 mov r22,r28 mov r23,r29 subi r22,lo8(-(3)) sbci r23,hi8(-(3)) mov r24,r28 mov r25,r29 adiw r24,1 rcall foo subi r17,lo8(-(1)) brne .L3 subi r16,lo8(-(1)) .L2: ldi r17,lo8(1) rjmp .L3 /* epilogue: frame size=4 */ /* epilogue: noreturn */ Dmitry. _______________________________________________ AVR-GCC-list mailing list AVR-GCC-list@nongnu.org http://lists.nongnu.org/mailman/listinfo/avr-gcc-list