From 9390f2d11408eca1b3ecbcaec484eca4a1bb9f23 Mon Sep 17 00:00:00 2001
From: Julien Signoles <julien.signoles@cea.fr>
Date: Thu, 25 Apr 2013 20:06:17 +0000
Subject: [PATCH] [E-ACSL] monitor only pointers and arrays

---
 src/plugins/e-acsl/pre_analysis.ml                 |  6 ++++--
 .../tests/e-acsl-runtime/oracle/gen_bts1390.c      |  5 -----
 .../tests/e-acsl-runtime/oracle/gen_bts13902.c     |  5 -----
 .../tests/e-acsl-runtime/oracle/gen_bts1399.c      |  2 --
 .../tests/e-acsl-runtime/oracle/gen_bts13992.c     |  2 --
 .../tests/e-acsl-runtime/oracle/gen_localvar.c     |  2 --
 .../tests/e-acsl-runtime/oracle/gen_localvar2.c    |  2 --
 .../tests/e-acsl-runtime/oracle/gen_ptr_init.c     |  2 --
 .../tests/e-acsl-runtime/oracle/gen_ptr_init2.c    |  2 --
 .../e-acsl/tests/e-acsl-runtime/oracle/gen_valid.c |  2 --
 .../tests/e-acsl-runtime/oracle/gen_valid2.c       |  2 --
 .../tests/e-acsl-runtime/oracle/gen_valid_alias.c  |  5 -----
 .../tests/e-acsl-runtime/oracle/gen_valid_alias2.c |  5 -----
 .../tests/e-acsl-runtime/oracle/gen_vector.c       | 14 ++++++--------
 .../tests/e-acsl-runtime/oracle/gen_vector2.c      | 14 ++++++--------
 .../e-acsl-runtime/oracle/valid_alias.1.res.oracle |  2 +-
 .../e-acsl-runtime/oracle/valid_alias.res.oracle   |  2 +-
 .../e-acsl-runtime/oracle/vector.1.res.oracle      |  7 ++++---
 .../tests/e-acsl-runtime/oracle/vector.res.oracle  |  7 ++++---
 src/plugins/e-acsl/tests/e-acsl-runtime/vector.c   |  3 ++-
 20 files changed, 28 insertions(+), 63 deletions(-)

diff --git a/src/plugins/e-acsl/pre_analysis.ml b/src/plugins/e-acsl/pre_analysis.ml
index 2519fb0064d..2272cd6fbf1 100644
--- a/src/plugins/e-acsl/pre_analysis.ml
+++ b/src/plugins/e-acsl/pre_analysis.ml
@@ -347,10 +347,10 @@ module rec Transfer
     let state = Env.default_varinfos state in
     let extend_to_expr state lhost e =
       let add_vi state vi =
-	if Varinfo.Set.mem vi state then 
+	if is_ptr_or_array_exp e && Varinfo.Set.mem vi state then 
 	  match base_addr e with
 	  | None -> state
-	  | Some vi -> Varinfo.Set.add vi state
+	  | Some vi_e -> Varinfo.Set.add vi_e state
 	else 
 	  state
       in
@@ -423,6 +423,8 @@ module rec Transfer
 	in
 	Dataflow.Done (Some state)
       | _ ->
+	Options.warning "function pointers may introduce too limited \
+instrumentation.";
 	(* imprecise function call: keep each argument *)
 	Dataflow.Done 
 	  (Some
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts1390.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts1390.c
index b627514fc2b..dd75426e271 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts1390.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts1390.c
@@ -119,8 +119,6 @@ void *__e_acsl_memchr(void const *buf, int c, size_t n)
   void *__retres;
   __store_block((void *)(& __retres),4U);
   __store_block((void *)(& buf),4U);
-  __store_block((void *)(& c),4U);
-  __store_block((void *)(& n),4U);
   {
     int __e_acsl_forall_2;
     unsigned int __e_acsl_k;
@@ -146,7 +144,6 @@ void *__e_acsl_memchr(void const *buf, int c, size_t n)
     e_acsl_end_loop3: /* internal */ ;
     __e_acsl_at_4 = __e_acsl_forall_2;
   }
-  __store_block((void *)(& __e_acsl_at_3),4U);
   __e_acsl_at_3 = c;
   __store_block((void *)(& __e_acsl_at_2),4U);
   __e_acsl_at_2 = buf;
@@ -220,8 +217,6 @@ void *__e_acsl_memchr(void const *buf, int c, size_t n)
                   (char *)"\\old(\\forall integer k; 0 <= k && k < n ==> (int)*((char *)buf+k) != c) ==>\n\\result == (void *)0",
                   16);
     __delete_block((void *)(& buf));
-    __delete_block((void *)(& c));
-    __delete_block((void *)(& n));
     __delete_block((void *)(& __retres));
     return __retres;
   }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts13902.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts13902.c
index 94bb2b9325d..a63bb3b6309 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts13902.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts13902.c
@@ -174,8 +174,6 @@ void *__e_acsl_memchr(void const *buf, int c, size_t n)
   void *__retres;
   __store_block((void *)(& __retres),4U);
   __store_block((void *)(& buf),4U);
-  __store_block((void *)(& c),4U);
-  __store_block((void *)(& n),4U);
   {
     int __e_acsl_forall_2;
     mpz_t __e_acsl_k;
@@ -232,7 +230,6 @@ void *__e_acsl_memchr(void const *buf, int c, size_t n)
     __e_acsl_at_4 = __e_acsl_forall_2;
     __gmpz_clear(__e_acsl_k);
   }
-  __store_block((void *)(& __e_acsl_at_3),4U);
   __e_acsl_at_3 = c;
   __store_block((void *)(& __e_acsl_at_2),4U);
   __e_acsl_at_2 = buf;
@@ -365,8 +362,6 @@ void *__e_acsl_memchr(void const *buf, int c, size_t n)
                   (char *)"\\old(\\forall integer k; 0 <= k && k < n ==> (int)*((char *)buf+k) != c) ==>\n\\result == (void *)0",
                   16);
     __delete_block((void *)(& buf));
-    __delete_block((void *)(& c));
-    __delete_block((void *)(& n));
     __delete_block((void *)(& __retres));
     return __retres;
   }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts1399.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts1399.c
index c272c755172..6b1383de20e 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts1399.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts1399.c
@@ -135,9 +135,7 @@ void *__e_acsl_malloc(size_t size)
 {
   void *__retres;
   __store_block((void *)(& __retres),4U);
-  __store_block((void *)(& size),4U);
   __retres = __malloc(size);
-  __delete_block((void *)(& size));
   __delete_block((void *)(& __retres));
   return __retres;
 }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts13992.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts13992.c
index 92292d85014..41010eccee5 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts13992.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_bts13992.c
@@ -182,9 +182,7 @@ void *__e_acsl_malloc(size_t size)
 {
   void *__retres;
   __store_block((void *)(& __retres),4U);
-  __store_block((void *)(& size),4U);
   __retres = __malloc(size);
-  __delete_block((void *)(& size));
   __delete_block((void *)(& __retres));
   return __retres;
 }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_localvar.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_localvar.c
index 9908ad514ec..d861adcd1f8 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_localvar.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_localvar.c
@@ -107,9 +107,7 @@ void *__e_acsl_malloc(size_t size)
 {
   void *__retres;
   __store_block((void *)(& __retres),4U);
-  __store_block((void *)(& size),4U);
   __retres = __malloc(size);
-  __delete_block((void *)(& size));
   __delete_block((void *)(& __retres));
   return __retres;
 }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_localvar2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_localvar2.c
index 9908ad514ec..d861adcd1f8 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_localvar2.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_localvar2.c
@@ -107,9 +107,7 @@ void *__e_acsl_malloc(size_t size)
 {
   void *__retres;
   __store_block((void *)(& __retres),4U);
-  __store_block((void *)(& size),4U);
   __retres = __malloc(size);
-  __delete_block((void *)(& size));
   __delete_block((void *)(& __retres));
   return __retres;
 }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr_init.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr_init.c
index 8f6be093616..14648a95ec4 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr_init.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr_init.c
@@ -100,9 +100,7 @@ void *__e_acsl_malloc(size_t size)
 {
   void *__retres;
   __store_block((void *)(& __retres),4U);
-  __store_block((void *)(& size),4U);
   __retres = __malloc(size);
-  __delete_block((void *)(& size));
   __delete_block((void *)(& __retres));
   return __retres;
 }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr_init2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr_init2.c
index 8f6be093616..14648a95ec4 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr_init2.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr_init2.c
@@ -100,9 +100,7 @@ void *__e_acsl_malloc(size_t size)
 {
   void *__retres;
   __store_block((void *)(& __retres),4U);
-  __store_block((void *)(& size),4U);
   __retres = __malloc(size);
-  __delete_block((void *)(& size));
   __delete_block((void *)(& __retres));
   return __retres;
 }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid.c
index 81f667be94f..6e1b00a2313 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid.c
@@ -124,9 +124,7 @@ void *__e_acsl_malloc(size_t size)
 {
   void *__retres;
   __store_block((void *)(& __retres),4U);
-  __store_block((void *)(& size),4U);
   __retres = __malloc(size);
-  __delete_block((void *)(& size));
   __delete_block((void *)(& __retres));
   return __retres;
 }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid2.c
index 81f667be94f..6e1b00a2313 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid2.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid2.c
@@ -124,9 +124,7 @@ void *__e_acsl_malloc(size_t size)
 {
   void *__retres;
   __store_block((void *)(& __retres),4U);
-  __store_block((void *)(& size),4U);
   __retres = __malloc(size);
-  __delete_block((void *)(& size));
   __delete_block((void *)(& __retres));
   return __retres;
 }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid_alias.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid_alias.c
index c2f4f1fbc07..39bfc7e30e1 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid_alias.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid_alias.c
@@ -132,9 +132,7 @@ void *__e_acsl_malloc(size_t size)
 {
   void *__retres;
   __store_block((void *)(& __retres),4U);
-  __store_block((void *)(& size),4U);
   __retres = __malloc(size);
-  __delete_block((void *)(& size));
   __delete_block((void *)(& __retres));
   return __retres;
 }
@@ -180,10 +178,8 @@ int main(void)
   int *a;
   int *b;
   int n;
-  __store_block((void *)(& n),4U);
   __store_block((void *)(& b),4U);
   __store_block((void *)(& a),4U);
-  __full_init((void *)(& n));
   n = 0;
   /*@ assert ¬\valid(a) ∧ ¬\valid(b); */
   {
@@ -293,7 +289,6 @@ int main(void)
                   (char *)"!\\valid(a) && !\\valid(b)",19);
   }
   __retres = 0;
-  __delete_block((void *)(& n));
   __delete_block((void *)(& b));
   __delete_block((void *)(& a));
   __clean();
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid_alias2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid_alias2.c
index 6365593033b..5c79ab7a567 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid_alias2.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_valid_alias2.c
@@ -148,9 +148,7 @@ void *__e_acsl_malloc(size_t size)
 {
   void *__retres;
   __store_block((void *)(& __retres),4U);
-  __store_block((void *)(& size),4U);
   __retres = __malloc(size);
-  __delete_block((void *)(& size));
   __delete_block((void *)(& __retres));
   return __retres;
 }
@@ -196,10 +194,8 @@ int main(void)
   int *a;
   int *b;
   int n;
-  __store_block((void *)(& n),4U);
   __store_block((void *)(& b),4U);
   __store_block((void *)(& a),4U);
-  __full_init((void *)(& n));
   n = 0;
   /*@ assert ¬\valid(a) ∧ ¬\valid(b); */
   {
@@ -307,7 +303,6 @@ int main(void)
                   (char *)"!\\valid(a) && !\\valid(b)",19);
   }
   __retres = 0;
-  __delete_block((void *)(& n));
   __delete_block((void *)(& b));
   __delete_block((void *)(& a));
   __clean();
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_vector.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_vector.c
index 2b9123b2a6a..7c4d9feda33 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_vector.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_vector.c
@@ -125,9 +125,7 @@ void *__e_acsl_malloc(size_t size)
 {
   void *__retres;
   __store_block((void *)(& __retres),4U);
-  __store_block((void *)(& size),4U);
   __retres = __malloc(size);
-  __delete_block((void *)(& size));
   __delete_block((void *)(& __retres));
   return __retres;
 }
@@ -170,7 +168,6 @@ int *new_inversed(int len, int *v)
   int i;
   int *p;
   __store_block((void *)(& p),4U);
-  __store_block((void *)(& v),4U);
   __full_init((void *)(& p));
   p = (int *)__e_acsl_malloc(sizeof(int) * (unsigned int)len);
   i = 0;
@@ -179,7 +176,6 @@ int *new_inversed(int len, int *v)
     *(p + i) = *(v + ((len - i) - 1));
     i ++;
   }
-  __delete_block((void *)(& v));
   __delete_block((void *)(& p));
   return p;
 }
@@ -187,23 +183,25 @@ int *new_inversed(int len, int *v)
 int main(void)
 {
   int __retres;
+  int x;
   int v1[3];
   int *v2;
   __store_block((void *)(& v2),4U);
   __store_block((void *)(v1),12U);
+  x = 3;
   __initialize((void *)(v1),sizeof(int));
   v1[0] = 1;
   __initialize((void *)(& v1[1]),sizeof(int));
   v1[1] = 2;
   __initialize((void *)(& v1[2]),sizeof(int));
-  v1[2] = 3;
+  v1[2] = x;
   LAST = v1[2];
   /*@ assert \initialized(&v1[2]); */
   {
     int __e_acsl_initialized;
     __e_acsl_initialized = __initialized((void *)(& v1[2]),sizeof(int));
     e_acsl_assert(__e_acsl_initialized,(char *)"Assertion",(char *)"main",
-                  (char *)"\\initialized(&v1[2])",25);
+                  (char *)"\\initialized(&v1[2])",26);
   }
   __full_init((void *)(& v2));
   v2 = new_inversed(3,v1);
@@ -213,11 +211,11 @@ int main(void)
     int __e_acsl_initialized_2;
     __e_acsl_initialized_2 = __initialized((void *)(v2 + 2),sizeof(int));
     e_acsl_assert(__e_acsl_initialized_2,(char *)"Assertion",(char *)"main",
-                  (char *)"\\initialized(v2+2)",28);
+                  (char *)"\\initialized(v2+2)",29);
   }
   /*@ assert LAST ≡ 1; */
   e_acsl_assert(LAST == 1,(char *)"Assertion",(char *)"main",
-                (char *)"LAST == 1",29);
+                (char *)"LAST == 1",30);
   __e_acsl_free((void *)v2);
   __retres = 0;
   __delete_block((void *)(& v2));
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_vector2.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_vector2.c
index abb78f1e956..3756d1802cf 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_vector2.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_vector2.c
@@ -145,9 +145,7 @@ void *__e_acsl_malloc(size_t size)
 {
   void *__retres;
   __store_block((void *)(& __retres),4U);
-  __store_block((void *)(& size),4U);
   __retres = __malloc(size);
-  __delete_block((void *)(& size));
   __delete_block((void *)(& __retres));
   return __retres;
 }
@@ -190,7 +188,6 @@ int *new_inversed(int len, int *v)
   int i;
   int *p;
   __store_block((void *)(& p),4U);
-  __store_block((void *)(& v),4U);
   __full_init((void *)(& p));
   p = (int *)__e_acsl_malloc(sizeof(int) * (unsigned int)len);
   i = 0;
@@ -199,7 +196,6 @@ int *new_inversed(int len, int *v)
     *(p + i) = *(v + ((len - i) - 1));
     i ++;
   }
-  __delete_block((void *)(& v));
   __delete_block((void *)(& p));
   return p;
 }
@@ -207,23 +203,25 @@ int *new_inversed(int len, int *v)
 int main(void)
 {
   int __retres;
+  int x;
   int v1[3];
   int *v2;
   __store_block((void *)(& v2),4U);
   __store_block((void *)(v1),12U);
+  x = 3;
   __initialize((void *)(v1),sizeof(int));
   v1[0] = 1;
   __initialize((void *)(& v1[1]),sizeof(int));
   v1[1] = 2;
   __initialize((void *)(& v1[2]),sizeof(int));
-  v1[2] = 3;
+  v1[2] = x;
   LAST = v1[2];
   /*@ assert \initialized(&v1[2]); */
   {
     int __e_acsl_initialized;
     __e_acsl_initialized = __initialized((void *)(& v1[2]),sizeof(int));
     e_acsl_assert(__e_acsl_initialized,(char *)"Assertion",(char *)"main",
-                  (char *)"\\initialized(&v1[2])",25);
+                  (char *)"\\initialized(&v1[2])",26);
   }
   __full_init((void *)(& v2));
   v2 = new_inversed(3,v1);
@@ -234,7 +232,7 @@ int main(void)
     __e_acsl_initialized_2 = __initialized((void *)(v2 + (long)2),
                                            sizeof(int));
     e_acsl_assert(__e_acsl_initialized_2,(char *)"Assertion",(char *)"main",
-                  (char *)"\\initialized(v2+2)",28);
+                  (char *)"\\initialized(v2+2)",29);
   }
   /*@ assert LAST ≡ 1; */
   {
@@ -246,7 +244,7 @@ int main(void)
     __e_acsl_eq = __gmpz_cmp((__mpz_struct const *)(__e_acsl_LAST),
                              (__mpz_struct const *)(__e_acsl));
     e_acsl_assert(__e_acsl_eq == 0,(char *)"Assertion",(char *)"main",
-                  (char *)"LAST == 1",29);
+                  (char *)"LAST == 1",30);
     __gmpz_clear(__e_acsl_LAST);
     __gmpz_clear(__e_acsl);
   }
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/valid_alias.1.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/valid_alias.1.res.oracle
index fa36eac9c68..359ee4a6b87 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/valid_alias.1.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/valid_alias.1.res.oracle
@@ -27,7 +27,6 @@ tests/e-acsl-runtime/valid_alias.c:10:[e-acsl] warning: E-ACSL construct `\alloc
         __fc_heap_status ∈ [--..--]
         __memory_size ∈ [--..--]
 [value] using specification for function __store_block
-[value] using specification for function __full_init
 tests/e-acsl-runtime/valid_alias.c:12:[value] Assertion got status valid.
 [value] using specification for function __initialized
 share/e-acsl/memory_model/e_acsl_mmodel.h:86:[value] Function __initialized: postcondition got status unknown.
@@ -42,6 +41,7 @@ tests/e-acsl-runtime/valid_alias.c:12:[value] all evaluations are invalid for fu
         (void *)b
 [value] using specification for function e_acsl_assert
 share/e-acsl/e_acsl.h:34:[value] Function e_acsl_assert: precondition got status valid.
+[value] using specification for function __full_init
 [value] using specification for function __delete_block
 FRAMAC_SHARE/libc/stdlib.h:127:[value] Function __e_acsl_malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.)
 FRAMAC_SHARE/libc/stdlib.h:132:[value] Function __e_acsl_malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.)
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/valid_alias.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/valid_alias.res.oracle
index 8dda7f0f775..8badb6e0c19 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/valid_alias.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/valid_alias.res.oracle
@@ -27,7 +27,6 @@ tests/e-acsl-runtime/valid_alias.c:10:[e-acsl] warning: E-ACSL construct `\alloc
         __fc_heap_status ∈ [--..--]
         __memory_size ∈ [--..--]
 [value] using specification for function __store_block
-[value] using specification for function __full_init
 tests/e-acsl-runtime/valid_alias.c:12:[value] Assertion got status valid.
 [value] using specification for function __initialized
 share/e-acsl/memory_model/e_acsl_mmodel.h:86:[value] Function __initialized: postcondition got status unknown.
@@ -42,6 +41,7 @@ tests/e-acsl-runtime/valid_alias.c:12:[value] all evaluations are invalid for fu
         (void *)b
 [value] using specification for function e_acsl_assert
 share/e-acsl/e_acsl.h:34:[value] Function e_acsl_assert: precondition got status valid.
+[value] using specification for function __full_init
 [value] using specification for function __delete_block
 FRAMAC_SHARE/libc/stdlib.h:127:[value] Function __e_acsl_malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.)
 FRAMAC_SHARE/libc/stdlib.h:132:[value] Function __e_acsl_malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.)
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/vector.1.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/vector.1.res.oracle
index 4cbe715e4e6..7d4344f8717 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/vector.1.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/vector.1.res.oracle
@@ -29,7 +29,7 @@ tests/e-acsl-runtime/vector.c:21:[e-acsl] warning: E-ACSL construct `\allocate'
         LAST ∈ {0}
 [value] using specification for function __store_block
 [value] using specification for function __initialize
-tests/e-acsl-runtime/vector.c:25:[value] Assertion got status valid.
+tests/e-acsl-runtime/vector.c:26:[value] Assertion got status valid.
 [value] using specification for function __initialized
 share/e-acsl/memory_model/e_acsl_mmodel.h:86:[value] Function __initialized: postcondition got status unknown.
 share/e-acsl/memory_model/e_acsl_mmodel.h:87:[value] Function __initialized: postcondition got status valid.
@@ -40,9 +40,9 @@ share/e-acsl/e_acsl.h:34:[value] Function e_acsl_assert: precondition got status
 FRAMAC_SHARE/libc/stdlib.h:127:[value] Function __e_acsl_malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.)
 FRAMAC_SHARE/libc/stdlib.h:132:[value] Function __e_acsl_malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.)
 tests/e-acsl-runtime/vector.c:16:[value] entering loop for the first time
-tests/e-acsl-runtime/vector.c:28:[value] Assertion got status unknown.
 tests/e-acsl-runtime/vector.c:29:[value] Assertion got status unknown.
-tests/e-acsl-runtime/vector.c:29:[kernel] warning: accessing uninitialized left-value: assert \initialized(&LAST);
+tests/e-acsl-runtime/vector.c:30:[value] Assertion got status unknown.
+tests/e-acsl-runtime/vector.c:30:[kernel] warning: accessing uninitialized left-value: assert \initialized(&LAST);
 FRAMAC_SHARE/libc/stdlib.h:142:[value] Function __e_acsl_free, behavior deallocation: precondition got status unknown.
 FRAMAC_SHARE/libc/stdlib.h:144:[value] Function __e_acsl_free, behavior deallocation: postcondition got status unknown.
 [kernel] warning: Neither code nor specification for function __clean, generating default assigns from the prototype
@@ -62,6 +62,7 @@ FRAMAC_SHARE/libc/stdlib.h:144:[value] Function __e_acsl_free, behavior dealloca
 [value] Values at end of function main:
           __fc_heap_status ∈ [--..--]
           LAST ∈ {1; 2; 3} or UNINITIALIZED
+          x ∈ {3}
           v1[0] ∈ {1}
             [1] ∈ {2}
             [2] ∈ {3}
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/vector.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/vector.res.oracle
index 1d5f127b3f4..3b69442f242 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/vector.res.oracle
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/vector.res.oracle
@@ -29,7 +29,7 @@ tests/e-acsl-runtime/vector.c:21:[e-acsl] warning: E-ACSL construct `\allocate'
         LAST ∈ {0}
 [value] using specification for function __store_block
 [value] using specification for function __initialize
-tests/e-acsl-runtime/vector.c:25:[value] Assertion got status valid.
+tests/e-acsl-runtime/vector.c:26:[value] Assertion got status valid.
 [value] using specification for function __initialized
 share/e-acsl/memory_model/e_acsl_mmodel.h:86:[value] Function __initialized: postcondition got status unknown.
 share/e-acsl/memory_model/e_acsl_mmodel.h:87:[value] Function __initialized: postcondition got status valid.
@@ -40,9 +40,9 @@ share/e-acsl/e_acsl.h:34:[value] Function e_acsl_assert: precondition got status
 FRAMAC_SHARE/libc/stdlib.h:127:[value] Function __e_acsl_malloc, behavior allocation: postcondition got status unknown. (Behavior may be inactive, no reduction performed.)
 FRAMAC_SHARE/libc/stdlib.h:132:[value] Function __e_acsl_malloc, behavior no_allocation: postcondition got status invalid. (Behavior may be inactive, no reduction performed.)
 tests/e-acsl-runtime/vector.c:16:[value] entering loop for the first time
-tests/e-acsl-runtime/vector.c:28:[value] Assertion got status unknown.
 tests/e-acsl-runtime/vector.c:29:[value] Assertion got status unknown.
-tests/e-acsl-runtime/vector.c:29:[kernel] warning: accessing uninitialized left-value: assert \initialized(&LAST);
+tests/e-acsl-runtime/vector.c:30:[value] Assertion got status unknown.
+tests/e-acsl-runtime/vector.c:30:[kernel] warning: accessing uninitialized left-value: assert \initialized(&LAST);
 [value] using specification for function __gmpz_init_set_si
 share/e-acsl/e_acsl_gmp.h:61:[value] Function __gmpz_init_set_si: precondition got status valid.
 share/e-acsl/e_acsl_gmp.h:63:[value] Function __gmpz_init_set_si: postcondition got status valid.
@@ -71,6 +71,7 @@ FRAMAC_SHARE/libc/stdlib.h:144:[value] Function __e_acsl_free, behavior dealloca
 [value] Values at end of function main:
           __fc_heap_status ∈ [--..--]
           LAST ∈ {1; 2; 3} or UNINITIALIZED
+          x ∈ {3}
           v1[0] ∈ {1}
             [1] ∈ {2}
             [2] ∈ {3}
diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/vector.c b/src/plugins/e-acsl/tests/e-acsl-runtime/vector.c
index a2870eb277c..d86ef57b989 100644
--- a/src/plugins/e-acsl/tests/e-acsl-runtime/vector.c
+++ b/src/plugins/e-acsl/tests/e-acsl-runtime/vector.c
@@ -19,7 +19,8 @@ int* new_inversed(int len, int *v) {
 }
 
 int main(void) {
-  int v1[3]= { 1, 2, 3}, *v2;
+  int x = 3;
+  int v1[3]= { 1, 2, x }, *v2;
   // @ assert \valid(&v1[2]);
   LAST = v1[2]; 
   //@ assert \initialized(v1+2);
-- 
GitLab