[fpc-pascal] Range checks

Adriaan van Os fpc at microbizz.nl
Tue Jan 30 09:02:02 CET 2018


Jonas Maebe wrote:

> Actually, it won't help because "qword - 1" will still be evaluated as
> qword. The issue is that there is no safe way to evaluate this with
> range checking that is correct in all cases without a 128 bit integer type:
> 1) if you evaluate it as qword, you get a range error if count is 0 (as
> above)
> 2) if you evaluate it as int64, then if count is high(int64)+1 you will
> get a range error even though the result could be represented in int64

Without type inclusion, that is in a language that allows mixing typed an untyped numbers, there is 
no anambiguous solution, as Jonas points out. So, I suggest to choose the next best solution, which 
is to let result type of the expression decide whether to apply 1) or 2). In this case, it would be 
2) as the result type is signed.

Regards,

Adriaan van Os




More information about the fpc-pascal mailing list