[fpc-devel] bug: Inc(v,i)/Dec(v,i)

Peter Vreman peter at freepascal.org
Thu Jul 7 07:39:32 CEST 2005


> shouldn't it implement inv(v,-1) in exactly the same way it implements
> v:=v-1?

The problem is what type do you give to -1. In the old situation the -1
was converted to the same type as v -> longword. Resulting in $ffffffff.
Adding the $ffffffff gives an overflow.

Note that the compiler doesn't know that -1 is a negative value. Because
it can also be a variable:

d:=-1;
inc(v,d);

If you translate inc(v,-1) to v:=v+(-1) then the operation is done in
64bit mode. It is the only way to garauntee that there is no overflow but
still a rangecheck for the result value.

It should be solved now in the current svn trunk.







More information about the fpc-devel mailing list