From 046f27f07bc99a6dc3541086a063eb1c2e60130b Mon Sep 17 00:00:00 2001
From: Michele Alberti <michele.alberti@cea.fr>
Date: Fri, 10 Apr 2020 13:34:07 +0200
Subject: [PATCH] [Eva] Make memexec also consider logic inputs as input bases.

---
 src/plugins/value/engine/mem_exec.ml  | 8 ++++++--
 tests/value/oracle/memexec.res.oracle | 7 +++----
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/src/plugins/value/engine/mem_exec.ml b/src/plugins/value/engine/mem_exec.ml
index b70a4bc3d01..423bf04634f 100644
--- a/src/plugins/value/engine/mem_exec.ml
+++ b/src/plugins/value/engine/mem_exec.ml
@@ -156,8 +156,12 @@ module Make
     | None -> ()
     | Some inout ->
       try
-        let output_bases = bases inout.Inout_type.over_outputs_if_termination
-        and input_bases = bases inout.Inout_type.over_inputs in
+        let output_bases = bases inout.Inout_type.over_outputs_if_termination in
+        let input_bases =
+          let input_bases = bases inout.Inout_type.over_inputs in
+          let logic_input_bases = bases inout.Inout_type.over_logic_inputs in
+          Base.Hptset.union input_bases logic_input_bases
+        in
         (* There are two strategies to compute the 'inputs' for a memexec
            function: either we take all inputs_bases+outputs_bases
            (outputs_bases are important because of weak updates), or we
diff --git a/tests/value/oracle/memexec.res.oracle b/tests/value/oracle/memexec.res.oracle
index a27eebd316e..f24a2a45c79 100644
--- a/tests/value/oracle/memexec.res.oracle
+++ b/tests/value/oracle/memexec.res.oracle
@@ -103,8 +103,7 @@
   Frama_C_show_each_f5: [9..2147483647], [-2147483648..6], [-2147483648..7]
 [eva] tests/value/memexec.c:113: Reusing old results for call to f5_aux
 [eva] tests/value/memexec.c:114: 
-  Frama_C_show_each_f5:
-  [9..2147483647], [-2147483648..2147483647], [-2147483648..7]
+  Frama_C_show_each_f5: [9..2147483647], [-2147483648..6], [-2147483648..7]
 [eva] Recording results for f5
 [eva] Done for function f5
 [eva] computing for function f6 <- main.
@@ -192,7 +191,7 @@
 [eva:final-states] Values at end of function f5_aux:
   v ∈ [--..--]
 [eva:final-states] Values at end of function f5:
-  g_f5_1 ∈ [--..--]
+  g_f5_1 ∈ [-2147483648..6]
   g_f5_2 ∈ [-2147483648..7]
   arg ∈ [9..2147483647]
 [eva:final-states] Values at end of function f6_1:
@@ -228,7 +227,7 @@
   S[0..7] ∈ {0}
    [8].i ∈ {0; 6}
    [9] ∈ {0}
-  g_f5_1 ∈ [--..--]
+  g_f5_1 ∈ [-2147483648..6]
   g_f5_2 ∈ [-2147483648..7]
   two_fields.x ∈ {1}
             .y ∈ {3}
-- 
GitLab