Hi all, Funny programm:
extern int cnt,ovf; void foo1 (void) { if (!++cnt) ++ovf; } void foo11 (void) { if (!(cnt += 11)) ++ovf; } Produce for foo1: ... mov &cnt, r15 mov r15, r14 ; 1 word, 1 cycle add #llo(1), r14 ; 1 word, 1 cycle mov r14, &cnt cmp #llo(-1), r15 ; 1 word, 1 cycle jne .L1 add #llo(1), &ovf and for foo11: ... mov &cnt, r15 add #llo(11), r15 ; 2 words, 2 cycles mov r15, &cnt jne .L3 add #llo(1), &ovf Compiler: 3.3.2 with patch from CVS/gcc/gcc-3.4 By the way, at a leisure I have checked up some other targets. mspgcc appeared the only thing which has taken advantage of available flag Z (in foo11). Not considering, certainly, pdp11 and m68k, the command "mov" which develops this flag. Regards.