> Gerhard Scholz wrote:
>>
>> The check for overflow is obviously implemented different in 2.0.0 and
>> 2.1.1
>
> I'm not sure, at least
>
>> .L9:
>>      movw %dx,-12(%ebp)
>> .Ll3:
>
> suggests that the target is not an integer, but instead is a (possibly
> unsigned) word type. Please check again!
>
>> A solution would be to replace that line by:
>>     d := integer(Ord(a))-Ord(b)
>>
>> It seems that the compiler now sees a "ord(c)" to be a BYTE, and BYTE -
>> BYTE
>> shall give a BYTE, and -1 is not in the range allowed for a BYTE.
>
> Differences always should be interpreted as signed values, the error
> message IMO comes from the final assignment.

What with cardinal-cardinal and pointer-cardinal or pointer-byte? Those
can't be represented by a longint (the native singed type of pascal). In
2.0.0 the those were converted to int64 values, but users were complaining
about the warnings that were generated.




_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to