From 0a41f035a413d0eb03d86cbb0efee5f00cdf2fda Mon Sep 17 00:00:00 2001
From: Valentin Perrelle <valentin.perrelle@cea.fr>
Date: Tue, 8 Feb 2022 18:31:48 +0100
Subject: [PATCH] [Eva] api: fix a bug in the computation of callsites

---
 src/plugins/value/utils/results.ml | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/plugins/value/utils/results.ml b/src/plugins/value/utils/results.ml
index dbb120d24ad..0e045ae21ec 100644
--- a/src/plugins/value/utils/results.ml
+++ b/src/plugins/value/utils/results.ml
@@ -739,7 +739,7 @@ let is_reachable_kinstr kinstr =
 let callers kf =
   let f = function
     | [] | [_] -> None
-    | _ :: (kf,_) :: _-> Some kf
+    | _ :: (caller,_) :: _-> Some caller
   in
   at_start_of kf |> callstacks |>
   List.filter_map f |> List.sort_uniq Kernel_function.compare
@@ -750,8 +750,10 @@ let callsites kf =
   let module Map = Kernel_function.Map in
   let f acc = function
     | [] | (_,Cil_types.Kglobal) :: _ -> acc
-    | (kf,Kstmt stmt) :: _->
-      Map.update kf (fun old -> Some (stmt :: Option.value ~default:[] old)) acc
+    | [(_,Kstmt _)] -> assert false (* End of callstacks should have no callsite *)
+    | (_kf,Kstmt stmt) :: (caller,_) :: _ -> (* kf = _kf *)
+      Map.update caller
+        (fun old -> Some (stmt :: Option.value ~default:[] old)) acc
   in
   at_start_of kf |> callstacks |>
   List.fold_left f Map.empty |> Map.to_seq |> List.of_seq |>
-- 
GitLab