From 60ac16850b7ecdfd7954b58fe78864704af421b4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20B=C3=BChler?= <david.buhler@cea.fr>
Date: Wed, 19 Dec 2018 10:52:09 +0100
Subject: [PATCH] [Ival] More precise bitwise operators on unbounded ivals.

---
 src/kernel_services/abstract_interp/ival.ml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/kernel_services/abstract_interp/ival.ml b/src/kernel_services/abstract_interp/ival.ml
index 391bc645b63..60c93219ceb 100644
--- a/src/kernel_services/abstract_interp/ival.ml
+++ b/src/kernel_services/abstract_interp/ival.ml
@@ -2908,7 +2908,8 @@ struct
     match result_size v1 v2 ~s1 ~s2 () with
     | None ->
       (* Unbounded result *)
-      None
+      if lower && s = Off then Some Int.zero
+      else if not lower && s = On then Some Int.minus_one else None
     | Some n ->
       (* The result is bounded: iterate from the rightmost significant bit *)
       let rec step r v1 v2 i =
-- 
GitLab