From b8009dc5422e34a9ceb04d03377988eb7f75703e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20B=C3=BChler?= <david.buhler@cea.fr>
Date: Tue, 30 Mar 2021 09:23:08 +0200
Subject: [PATCH] [Eva] Fixes a crash in the automatic loop unrolling.

---
 src/kernel_services/abstract_interp/int_set.ml | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/kernel_services/abstract_interp/int_set.ml b/src/kernel_services/abstract_interp/int_set.ml
index 00a4e0fe4bd..333d647b333 100644
--- a/src/kernel_services/abstract_interp/int_set.ml
+++ b/src/kernel_services/abstract_interp/int_set.ml
@@ -575,10 +575,10 @@ let complement_under ~min ~max set =
     end
   done;
   let b, e = Int.succ (get (!index-1)), Int.pred (get !index) in
-  let card = Int.(to_int (succ (sub e b))) in
-  if card <= 0 then `Bottom
-  else if card <= !small_cardinal
-  then `Set (Array.init card (fun i -> Int.add b (Int.of_int i)))
+  let card = Int.succ (Int.sub e b) in
+  if Int.(le card zero) then `Bottom
+  else if Int.le card (Int.of_int !small_cardinal)
+  then `Set (Array.init (Int.to_int card) (fun i -> Int.add b (Int.of_int i)))
   else `Top (b, e, Int.one)
 
 (* ------------------------------ Arithmetics ------------------------------- *)
-- 
GitLab