Microsoft Visual C/C++ (VS2008) compiler output using -O1 (optimize for code size) switch, x86 target: Non-inline functions: _TEXT SEGMENT _inc32i PROC ; COMDAT ; 43 : pl[0] += 1; 00000 ff 05 00 00 00 00 inc DWORD PTR _rgl ; 44 : pl[1] += 1; 00006 ff 05 04 00 00 00 inc DWORD PTR _rgl+4 ; 45 : } 0000c c3 ret 0 _inc32i ENDP ; Function compile flags: /Ogspy _TEXT ENDS ; COMDAT _inc64i _TEXT SEGMENT _inc64i PROC ; COMDAT ; 31 : pq[0] += 1; 00000 83 05 00 00 00 00 01 add DWORD PTR _rgq, 1 00007 83 15 04 00 00 00 00 adc DWORD PTR _rgq+4, 0 ; 32 : pq[1] += 1; 0000e 83 05 08 00 00 00 01 add DWORD PTR _rgq+8, 1 00015 83 15 0c 00 00 00 00 adc DWORD PTR _rgq+12, 0 ; 33 : } 0001c c3 ret 0 _inc64i ENDP Inlined loop: ; 63 : { ; 64 : inc32i(&rgl[0]); 00005 ff 05 00 00 00 00 inc DWORD PTR _rgl 0000b ff 05 04 00 00 00 inc DWORD PTR _rgl+4 ; 65 : inc64i(&rgq[0]); 00011 83 05 00 00 00 00 01 add DWORD PTR _rgq, 1 00018 83 15 04 00 00 00 00 adc DWORD PTR _rgq+4, 0 0001f 83 05 08 00 00 00 01 add DWORD PTR _rgq+8, 1 00026 83 15 0c 00 00 00 00 adc DWORD PTR _rgq+12, 0