> 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.




_______________________________________________
fpc-devel maillist  -  [email protected]
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to