Microsoft Visual C/C++ (VS2008) compiler output using -O2 (optimize for speed) switch, x86 target: Non-inline functions: _TEXT SEGMENT _inc32i PROC ; COMDAT ; 43 : pl[0] += 1; 00000 b8 01 00 00 00 mov eax, 1 00005 01 05 00 00 00 00 add DWORD PTR _rgl, eax ; 44 : pl[1] += 1; 0000b 01 05 04 00 00 00 add DWORD PTR _rgl+4, eax ; 45 : } 00011 c3 ret 0 _inc32i ENDP ; Function compile flags: /Ogtpy _TEXT ENDS ; COMDAT _inc64i _TEXT SEGMENT _inc64i PROC ; COMDAT ; 31 : pq[0] += 1; 00000 b9 01 00 00 00 mov ecx, 1 00005 01 0d 00 00 00 00 add DWORD PTR _rgq, ecx 0000b b8 00 00 00 00 mov eax, 0 00010 11 05 04 00 00 00 adc DWORD PTR _rgq+4, eax ; 32 : pq[1] += 1; 00016 01 0d 08 00 00 00 add DWORD PTR _rgq+8, ecx 0001c 11 05 0c 00 00 00 adc DWORD PTR _rgq+12, eax ; 33 : } 00022 c3 ret 0 _inc64i ENDP Inlined loop: ; 63 : { ; 64 : inc32i(&rgl[0]); 00010 01 05 00 00 00 00 add DWORD PTR _rgl, eax 00016 01 05 04 00 00 00 add DWORD PTR _rgl+4, eax ; 65 : inc64i(&rgq[0]); 0001c 01 05 00 00 00 00 add DWORD PTR _rgq, eax 00022 11 15 04 00 00 00 adc DWORD PTR _rgq+4, edx 00028 01 05 08 00 00 00 add DWORD PTR _rgq+8, eax 0002e 11 15 0c 00 00 00 adc DWORD PTR _rgq+12, edx