diff options
Diffstat (limited to 'utils/misc.ml')
| -rw-r--r-- | utils/misc.ml | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/utils/misc.ml b/utils/misc.ml index 997508f854..0f94be92a9 100644 --- a/utils/misc.ml +++ b/utils/misc.ml @@ -176,7 +176,9 @@ let no_overflow_add a b = (a lxor b) lor (a lxor (lnot (a+b))) < 0 let no_overflow_sub a b = (a lxor (lnot b)) lor (b lxor (a-b)) < 0 -let no_overflow_lsl a = min_int asr 1 <= a && a <= max_int asr 1 +let no_overflow_mul a b = b <> 0 && (a * b) / b = a + +let no_overflow_lsl a k = 0 <= k && k < Sys.word_size && min_int asr k <= a && a <= max_int asr k (* String operations *) |
