summaryrefslogtreecommitdiff
path: root/utils/misc.ml
diff options
context:
space:
mode:
Diffstat (limited to 'utils/misc.ml')
-rw-r--r--utils/misc.ml4
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 *)