
 Как я и написал выше - 32 битные компиляторы оптимизируют код... Вот фрагменты ASM-кода для вышеприведенной программы (FPC 2.0.4, в режиме совместимости с Дельфи):
# [13] for i := -2147483647 to 2147483646 do inc(k);
	movl	$-2147483647,U_P$PROJECT1_I
	decl	U_P$PROJECT1_I
	.balign 4
.L13:
	incl	U_P$PROJECT1_I
	incl	U_P$PROJECT1_K
	cmpl	$2147483646,U_P$PROJECT1_I
	jl	.L13
.Ll5:
	.stabn 68,0,14,.Ll5 - _main
# [20] for i := -2147483647 to 2147483646 do k:=k+1;
	movl	$-2147483647,U_P$PROJECT1_I
	decl	U_P$PROJECT1_I
	.balign 4
.L61:
	incl	U_P$PROJECT1_I
	incl	U_P$PROJECT1_K
	cmpl	$2147483646,U_P$PROJECT1_I
	jl	.L61
.Ll10:
	.stabn 68,0,21,.Ll10 - _main
Как видим, что Inc(k), что K := K + 1 заменяются на INCL
Другое дело - если K сделать байтовым... Тогда:
# [14] for i := -2147483647 to 2147483646 do inc(k);
	movl	$-2147483647,U_P$PROJECT1_I
	decl	U_P$PROJECT1_I
	.balign 4
.L13:
	incl	U_P$PROJECT1_I
	incb	U_P$PROJECT1_K
	cmpl	$2147483646,U_P$PROJECT1_I
	jl	.L13
.Ll5:
	.stabn 68,0,15,.Ll5 - _main
# [21] for i := -2147483647 to 2147483646 do k:=k+1;
	movl	$-2147483647,U_P$PROJECT1_I
	decl	U_P$PROJECT1_I
	.balign 4
.L61:
	incl	U_P$PROJECT1_I
	movzbl	U_P$PROJECT1_K,%eax
	incl	%eax
	movb	%al,U_P$PROJECT1_K
	cmpl	$2147483646,U_P$PROJECT1_I
	jl	.L61
.Ll10:
	.stabn 68,0,22,.Ll10 - _main
, и разница во времени выполнения кода уже в 2 раза больше.