Hi, Something like this:
Int64 := Byte + Byte + (Signed integer type (8,16 or 32 bit) with value < 0) will always give a range check error on X86_64 platform (if range checking is enabled). From a mathematical POV, this can never give a range error, max value would be 2147484157 (255 +255 High(int32)), min value would be -2147483649 (0-High(Int32)). At some point the negative integer is extended to a 64-bit value and then tested to be <= High(Int64). This of course will always fail, since the high bit will be set for the negative integer (and comparion is unsigned). Is this a consequnece of how fpc treats integer arithmetics (and thus to be expected) or is this a bug. If it is as designed, then why does the same not happen for Int64 := Byte + (Signed integer type (8,16 or 32 bit) with value < 0) nor for the 32-bit platform. (Tested on Windows and Linux only with fpc 3.2.2 and fpc trunk) -- Bart _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel