From 9e9cca2a32b7d79e6a4e877ddecff80747ca6339 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20B=C3=BChler?= <david.buhler@cea.fr>
Date: Tue, 16 Apr 2024 14:35:33 +0200
Subject: [PATCH] [Eva] Sets the current location in the engine, not in the
 cvalue domain.

---
 src/plugins/eva/domains/cvalue/cvalue_init.ml | 2 --
 src/plugins/eva/engine/initialization.ml      | 7 ++++++-
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/plugins/eva/domains/cvalue/cvalue_init.ml b/src/plugins/eva/domains/cvalue/cvalue_init.ml
index d080059b3ae..3936eb4560c 100644
--- a/src/plugins/eva/domains/cvalue/cvalue_init.ml
+++ b/src/plugins/eva/domains/cvalue/cvalue_init.ml
@@ -111,8 +111,6 @@ let reject_empty_struct b offset typ =
 (** [initialize_var_using_type varinfo state] uses the type of [varinfo]
     to create an initial value in [state]. *)
 let initialize_var_using_type varinfo state =
-  let open Current_loc.Operators in
-  let<> UpdatedCurrentLoc = varinfo.vdecl in
   let rec add_offsetmap depth b name_desc name typ offset_orig typ_orig state =
     let typ = Cil.unrollType typ in
     let loc = lazy (loc_of_typoffset b typ_orig offset_orig) in
diff --git a/src/plugins/eva/engine/initialization.ml b/src/plugins/eva/engine/initialization.ml
index 22bd7987f91..304e8a1ff61 100644
--- a/src/plugins/eva/engine/initialization.ml
+++ b/src/plugins/eva/engine/initialization.ml
@@ -267,7 +267,12 @@ module Make
       else
         let var_kind = Abstract_domain.Formal kf in
         let state = Domain.enter_scope var_kind l state in
-        List.fold_right (Domain.initialize_variable_using_type var_kind) l state
+        let init vi state =
+          let open Current_loc.Operators in
+          let<> UpdatedCurrentLoc = vi.vdecl in
+          Domain.initialize_variable_using_type var_kind vi state
+        in
+        List.fold_right init l state
 
   (* Use the values supplied in [actuals] for the formals of [kf], and
      bind them in [state] *)
-- 
GitLab