diff --git a/src/plugins/e-acsl/tests/gmp/at.i b/src/plugins/e-acsl/tests/gmp/at.i index 589c9671f18d9e6b019bcb56e5586db36c57cb49..fd3830e91d0bb02db49c6cef81caff9f8c600c57 100644 --- a/src/plugins/e-acsl/tests/gmp/at.i +++ b/src/plugins/e-acsl/tests/gmp/at.i @@ -15,10 +15,6 @@ void f(void) { A = 3; } -/* /\*@ requires \valid(p); */ -/* @ requires \valid(p+1); */ -/* @ requires \valid(q); */ -/* @*\/ */ void g(int *p, int *q) { *p = 0; *(p+1) = 1; @@ -30,6 +26,7 @@ void g(int *p, int *q) { /*@ assert (\at(*(p+\at(*q,L1)),L2) == 2); */ L3: /*@ assert (\at(*(p+\at(*q,L1)),Here) == 2); */ + // /*@ assert (\at(*(p+\at(*q,L1)),L3) == 2); */ // doesn't work yet // /*@ assert (\at(*(p+\at(*q,L2)),L1)) == 1; */ return ; diff --git a/src/plugins/e-acsl/tests/gmp/oracle/at.0.res.oracle b/src/plugins/e-acsl/tests/gmp/oracle/at.0.res.oracle index 16d540237f4ddc828e41c098f252bf3a70df12a4..aee6f366150eaedf11a4eadbb41a23f19770e3da 100644 --- a/src/plugins/e-acsl/tests/gmp/oracle/at.0.res.oracle +++ b/src/plugins/e-acsl/tests/gmp/oracle/at.0.res.oracle @@ -18,18 +18,18 @@ [value] using specification for function __e_acsl_assert tests/gmp/at.i:12:[value] cannot evaluate ACSL term, \at() on a C label is unsupported tests/gmp/at.i:12:[value] warning: assertion got status unknown. -tests/gmp/at.i:51:[value] cannot evaluate ACSL term, \at() on a C label is unsupported -tests/gmp/at.i:51:[value] warning: assertion got status unknown. -tests/gmp/at.i:52:[value] cannot evaluate ACSL term, \at() on a C label is unsupported -tests/gmp/at.i:52:[value] warning: assertion got status unknown. -tests/gmp/at.i:53:[value] cannot evaluate ACSL term, \at() on a C label is unsupported -tests/gmp/at.i:53:[value] warning: assertion got status unknown. +tests/gmp/at.i:48:[value] cannot evaluate ACSL term, \at() on a C label is unsupported +tests/gmp/at.i:48:[value] warning: assertion got status unknown. +tests/gmp/at.i:49:[value] cannot evaluate ACSL term, \at() on a C label is unsupported +tests/gmp/at.i:49:[value] warning: assertion got status unknown. +tests/gmp/at.i:50:[value] cannot evaluate ACSL term, \at() on a C label is unsupported +tests/gmp/at.i:50:[value] warning: assertion got status unknown. [value] using specification for function __e_acsl_initialize [value] using specification for function __e_acsl_valid_read FRAMAC_SHARE/e-acsl/e_acsl.h:43:[value] warning: function __e_acsl_assert: precondition got status unknown. -tests/gmp/at.i:30:[value] cannot evaluate ACSL term, \at() on a C label is unsupported -tests/gmp/at.i:30:[value] warning: assertion got status unknown. -tests/gmp/at.i:32:[value] cannot evaluate ACSL term, \at() on a C label is unsupported -tests/gmp/at.i:32:[value] warning: assertion got status unknown. +tests/gmp/at.i:26:[value] cannot evaluate ACSL term, \at() on a C label is unsupported +tests/gmp/at.i:26:[value] warning: assertion got status unknown. +tests/gmp/at.i:28:[value] cannot evaluate ACSL term, \at() on a C label is unsupported +tests/gmp/at.i:28:[value] warning: assertion got status unknown. [value] using specification for function __e_acsl_memory_clean [value] done for function main diff --git a/src/plugins/e-acsl/tests/gmp/oracle/at.1.res.oracle b/src/plugins/e-acsl/tests/gmp/oracle/at.1.res.oracle index a01d4fbb6bb7403e43c0992007afd5b38cc836ce..57166c474fd15aaa224462af9dde64f7aef7a41c 100644 --- a/src/plugins/e-acsl/tests/gmp/oracle/at.1.res.oracle +++ b/src/plugins/e-acsl/tests/gmp/oracle/at.1.res.oracle @@ -14,28 +14,30 @@ [value] using specification for function __e_acsl_memory_init [value] using specification for function __e_acsl_store_block [value] using specification for function __e_acsl_full_init -[value] using specification for function __e_acsl_delete_block [value] using specification for function __gmpz_init_set_si +[value] using specification for function __gmpz_init_set +[value] using specification for function __gmpz_clear +[value] using specification for function __e_acsl_delete_block [value] using specification for function __gmpz_cmp [value] using specification for function __e_acsl_assert FRAMAC_SHARE/e-acsl/e_acsl.h:43:[value] warning: function __e_acsl_assert: precondition got status unknown. -[value] using specification for function __gmpz_clear +[value] using specification for function __gmpz_init_set_ui [value] using specification for function __gmpz_init [value] using specification for function __gmpz_add -[value] using specification for function __gmpz_init_set +FRAMAC_SHARE/e-acsl/e_acsl_gmp.h:53:[value] warning: function __gmpz_init_set: precondition got status unknown. tests/gmp/at.i:12:[value] cannot evaluate ACSL term, \at() on a C label is unsupported tests/gmp/at.i:12:[value] warning: assertion got status unknown. -tests/gmp/at.i:51:[value] cannot evaluate ACSL term, \at() on a C label is unsupported -tests/gmp/at.i:51:[value] warning: assertion got status unknown. -tests/gmp/at.i:52:[value] cannot evaluate ACSL term, \at() on a C label is unsupported -tests/gmp/at.i:52:[value] warning: assertion got status unknown. -tests/gmp/at.i:53:[value] cannot evaluate ACSL term, \at() on a C label is unsupported -tests/gmp/at.i:53:[value] warning: assertion got status unknown. +tests/gmp/at.i:48:[value] cannot evaluate ACSL term, \at() on a C label is unsupported +tests/gmp/at.i:48:[value] warning: assertion got status unknown. +tests/gmp/at.i:49:[value] cannot evaluate ACSL term, \at() on a C label is unsupported +tests/gmp/at.i:49:[value] warning: assertion got status unknown. +tests/gmp/at.i:50:[value] cannot evaluate ACSL term, \at() on a C label is unsupported +tests/gmp/at.i:50:[value] warning: assertion got status unknown. [value] using specification for function __e_acsl_initialize [value] using specification for function __e_acsl_valid_read -tests/gmp/at.i:30:[value] cannot evaluate ACSL term, \at() on a C label is unsupported -tests/gmp/at.i:30:[value] warning: assertion got status unknown. -tests/gmp/at.i:32:[value] cannot evaluate ACSL term, \at() on a C label is unsupported -tests/gmp/at.i:32:[value] warning: assertion got status unknown. +tests/gmp/at.i:26:[value] cannot evaluate ACSL term, \at() on a C label is unsupported +tests/gmp/at.i:26:[value] warning: assertion got status unknown. +tests/gmp/at.i:28:[value] cannot evaluate ACSL term, \at() on a C label is unsupported +tests/gmp/at.i:28:[value] warning: assertion got status unknown. [value] using specification for function __e_acsl_memory_clean [value] done for function main diff --git a/src/plugins/e-acsl/tests/gmp/oracle/gen_at.c b/src/plugins/e-acsl/tests/gmp/oracle/gen_at.c index e69475e2914990035c74c31ec074edddcc239778..f264d7d235cf80e9d1702904d67278f13a5ed2a6 100644 --- a/src/plugins/e-acsl/tests/gmp/oracle/gen_at.c +++ b/src/plugins/e-acsl/tests/gmp/oracle/gen_at.c @@ -34,9 +34,9 @@ void f(void) void g(int *p, int *q) { - int __gen_e_acsl_at_3; + unsigned long __gen_e_acsl_at_3; int __gen_e_acsl_at_2; - int __gen_e_acsl_at; + unsigned long __gen_e_acsl_at; __e_acsl_store_block((void *)(& p),8UL); __e_acsl_store_block((void *)(& q),8UL); __e_acsl_initialize((void *)p,sizeof(int)); @@ -50,17 +50,17 @@ void g(int *p, int *q) int __gen_e_acsl_valid_read_3; __gen_e_acsl_valid_read_3 = __e_acsl_valid_read((void *)q,sizeof(int)); __e_acsl_assert(__gen_e_acsl_valid_read_3,(char *)"RTE",(char *)"g", - (char *)"mem_access: \\valid_read(q)",32); - __e_acsl_store_block((void *)(& __gen_e_acsl_at_3),4UL); - __gen_e_acsl_at_3 = *q; + (char *)"mem_access: \\valid_read(q)",28); + __e_acsl_store_block((void *)(& __gen_e_acsl_at_3),8UL); + __gen_e_acsl_at_3 = (unsigned long)*q; } { int __gen_e_acsl_valid_read; __gen_e_acsl_valid_read = __e_acsl_valid_read((void *)q,sizeof(int)); __e_acsl_assert(__gen_e_acsl_valid_read,(char *)"RTE",(char *)"g", - (char *)"mem_access: \\valid_read(q)",30); - __e_acsl_store_block((void *)(& __gen_e_acsl_at),4UL); - __gen_e_acsl_at = *q; + (char *)"mem_access: \\valid_read(q)",26); + __e_acsl_store_block((void *)(& __gen_e_acsl_at),8UL); + __gen_e_acsl_at = (unsigned long)*q; } __e_acsl_initialize((void *)p,sizeof(int)); *p = 2; @@ -75,14 +75,14 @@ void g(int *p, int *q) sizeof(int)); __e_acsl_assert(__gen_e_acsl_valid_read_2,(char *)"RTE",(char *)"g", (char *)"mem_access: \\valid_read(p+__gen_e_acsl_at)", - 30); + 26); __e_acsl_store_block((void *)(& __gen_e_acsl_at_2),4UL); __gen_e_acsl_at_2 = *(p + __gen_e_acsl_at); } A = 4; /*@ assert \at(*(p+\at(*q,L1)),L2) ≡ 2; */ __e_acsl_assert(__gen_e_acsl_at_2 == 2,(char *)"Assertion",(char *)"g", - (char *)"\\at(*(p+\\at(*q,L1)),L2) == 2",30); + (char *)"\\at(*(p+\\at(*q,L1)),L2) == 2",26); L3: /*@ assert \at(*(p+\at(*q,L1)),Here) ≡ 2; */ { @@ -91,10 +91,10 @@ void g(int *p, int *q) sizeof(int)); __e_acsl_assert(__gen_e_acsl_valid_read_4,(char *)"RTE",(char *)"g", (char *)"mem_access: \\valid_read(p+__gen_e_acsl_at_3)", - 32); + 28); __e_acsl_assert(*(p + __gen_e_acsl_at_3) == 2,(char *)"Assertion", (char *)"g",(char *)"\\at(*(p+\\at(*q,L1)),Here) == 2", - 32); + 28); } __e_acsl_delete_block((void *)(& p)); __e_acsl_delete_block((void *)(& q)); @@ -129,12 +129,12 @@ int main(void) __e_acsl_store_block((void *)(& __gen_e_acsl_at_3),4UL); __gen_e_acsl_at_3 = x; __e_acsl_store_block((void *)(& __gen_e_acsl_at_2),8UL); - __gen_e_acsl_at_2 = (long)x + (long)1; + __gen_e_acsl_at_2 = x + 1; __e_acsl_store_block((void *)(& __gen_e_acsl_at),4UL); __gen_e_acsl_at = x; /*@ assert x ≡ 0; */ __e_acsl_assert(x == 0,(char *)"Assertion",(char *)"main", - (char *)"x == 0",46); + (char *)"x == 0",43); __e_acsl_full_init((void *)(& x)); x = 1; __e_acsl_full_init((void *)(& x)); @@ -142,14 +142,13 @@ int main(void) __gen_e_acsl_f(); /*@ assert \at(x,L) ≡ 0; */ __e_acsl_assert(__gen_e_acsl_at == 0,(char *)"Assertion",(char *)"main", - (char *)"\\at(x,L) == 0",51); + (char *)"\\at(x,L) == 0",48); /*@ assert \at(x+1,L) ≡ 1; */ - __e_acsl_assert(__gen_e_acsl_at_2 == (long)1,(char *)"Assertion", - (char *)"main",(char *)"\\at(x+1,L) == 1",52); + __e_acsl_assert(__gen_e_acsl_at_2 == 1,(char *)"Assertion",(char *)"main", + (char *)"\\at(x+1,L) == 1",49); /*@ assert \at(x,L)+1 ≡ 1; */ - __e_acsl_assert((long)__gen_e_acsl_at_3 + (long)1 == (long)1, - (char *)"Assertion",(char *)"main", - (char *)"\\at(x,L)+1 == 1",53); + __e_acsl_assert(__gen_e_acsl_at_3 + 1 == 1,(char *)"Assertion", + (char *)"main",(char *)"\\at(x,L)+1 == 1",50); g(t,& x); __retres = 0; __e_acsl_delete_block((void *)(t)); @@ -169,7 +168,7 @@ int __gen_e_acsl_h(int x) __gen_e_acsl_at = x; __retres = h(x); __e_acsl_assert(__retres == __gen_e_acsl_at,(char *)"Postcondition", - (char *)"h",(char *)"\\result == \\old(x)",38); + (char *)"h",(char *)"\\result == \\old(x)",35); __e_acsl_delete_block((void *)(& x)); __e_acsl_delete_block((void *)(& __retres)); return __retres; diff --git a/src/plugins/e-acsl/tests/gmp/oracle/gen_at2.c b/src/plugins/e-acsl/tests/gmp/oracle/gen_at2.c index 7870081e083317b1fa68c4ce850cad74d6296465..efe0a01ae117a0a7010fd4f69d0b64c2786abc5b 100644 --- a/src/plugins/e-acsl/tests/gmp/oracle/gen_at2.c +++ b/src/plugins/e-acsl/tests/gmp/oracle/gen_at2.c @@ -6,81 +6,92 @@ void __gen_e_acsl_f(void); /*@ ensures \at(A,Post) ≡ 3; */ void f(void) { - int __gen_e_acsl_at_4; - int __gen_e_acsl_at_3; - int __gen_e_acsl_at_2; - int __gen_e_acsl_at; - __gen_e_acsl_at_3 = A; - __gen_e_acsl_at = A; + mpz_t __gen_e_acsl_at_3; + mpz_t __gen_e_acsl_at_2; + mpz_t __gen_e_acsl_at; + { + mpz_t __gen_e_acsl_A_4; + __gmpz_init_set_si(__gen_e_acsl_A_4,(long)A); + __gmpz_init_set(__gen_e_acsl_at,(__mpz_struct const *)(__gen_e_acsl_A_4)); + __gmpz_clear(__gen_e_acsl_A_4); + } + { + mpz_t __gen_e_acsl_A; + __gmpz_init_set_si(__gen_e_acsl_A,(long)A); + __gmpz_init_set(__gen_e_acsl_at,(__mpz_struct const *)(__gen_e_acsl_A)); + __gmpz_clear(__gen_e_acsl_A); + } A = 1; - F: __gen_e_acsl_at_4 = __gen_e_acsl_at_3; - __gen_e_acsl_at_2 = A; - A = 2; + F: + __gmpz_init_set(__gen_e_acsl_at_3, + (__mpz_struct const *)(__gen_e_acsl_at)); + { + mpz_t __gen_e_acsl_A_2; + __gmpz_init_set_si(__gen_e_acsl_A_2,(long)A); + __gmpz_init_set(__gen_e_acsl_at_2, + (__mpz_struct const *)(__gen_e_acsl_A_2)); + __gmpz_clear(__gen_e_acsl_A_2); + } + A = 2; /*@ assert \at(A,Pre) ≡ 0; */ { mpz_t __gen_e_acsl_; - mpz_t __gen_e_acsl__2; int __gen_e_acsl_eq; - __gmpz_init_set_si(__gen_e_acsl_,(long)__gen_e_acsl_at); - __gmpz_init_set_si(__gen_e_acsl__2,(long)0); - __gen_e_acsl_eq = __gmpz_cmp((__mpz_struct const *)(__gen_e_acsl_), - (__mpz_struct const *)(__gen_e_acsl__2)); + __gmpz_init_set_ui(__gen_e_acsl_,(unsigned long)0); + __gen_e_acsl_eq = __gmpz_cmp((__mpz_struct const *)(__gen_e_acsl_at), + (__mpz_struct const *)(__gen_e_acsl_)); __e_acsl_assert(__gen_e_acsl_eq == 0,(char *)"Assertion",(char *)"f", (char *)"\\at(A,Pre) == 0",11); __gmpz_clear(__gen_e_acsl_); - __gmpz_clear(__gen_e_acsl__2); } /*@ assert \at(A,F) ≡ 1; */ { - mpz_t __gen_e_acsl__3; - mpz_t __gen_e_acsl__4; + mpz_t __gen_e_acsl__2; int __gen_e_acsl_eq_2; - __gmpz_init_set_si(__gen_e_acsl__3,(long)__gen_e_acsl_at_2); - __gmpz_init_set_si(__gen_e_acsl__4,(long)1); - __gen_e_acsl_eq_2 = __gmpz_cmp((__mpz_struct const *)(__gen_e_acsl__3), - (__mpz_struct const *)(__gen_e_acsl__4)); + __gmpz_init_set_ui(__gen_e_acsl__2,(unsigned long)1); + __gen_e_acsl_eq_2 = __gmpz_cmp((__mpz_struct const *)(__gen_e_acsl_at_2), + (__mpz_struct const *)(__gen_e_acsl__2)); __e_acsl_assert(__gen_e_acsl_eq_2 == 0,(char *)"Assertion",(char *)"f", (char *)"\\at(A,F) == 1",12); - __gmpz_clear(__gen_e_acsl__3); - __gmpz_clear(__gen_e_acsl__4); + __gmpz_clear(__gen_e_acsl__2); } /*@ assert \at(A,Here) ≡ 2; */ { - mpz_t __gen_e_acsl__5; - mpz_t __gen_e_acsl__6; + mpz_t __gen_e_acsl_A_3; + mpz_t __gen_e_acsl__3; int __gen_e_acsl_eq_3; - __gmpz_init_set_si(__gen_e_acsl__5,(long)A); - __gmpz_init_set_si(__gen_e_acsl__6,(long)2); - __gen_e_acsl_eq_3 = __gmpz_cmp((__mpz_struct const *)(__gen_e_acsl__5), - (__mpz_struct const *)(__gen_e_acsl__6)); + __gmpz_init_set_si(__gen_e_acsl_A_3,(long)A); + __gmpz_init_set_ui(__gen_e_acsl__3,(unsigned long)2); + __gen_e_acsl_eq_3 = __gmpz_cmp((__mpz_struct const *)(__gen_e_acsl_A_3), + (__mpz_struct const *)(__gen_e_acsl__3)); __e_acsl_assert(__gen_e_acsl_eq_3 == 0,(char *)"Assertion",(char *)"f", (char *)"\\at(A,Here) == 2",13); - __gmpz_clear(__gen_e_acsl__5); - __gmpz_clear(__gen_e_acsl__6); + __gmpz_clear(__gen_e_acsl_A_3); + __gmpz_clear(__gen_e_acsl__3); } /*@ assert \at(\at(A,Pre),F) ≡ 0; */ { - mpz_t __gen_e_acsl__7; - mpz_t __gen_e_acsl__8; + mpz_t __gen_e_acsl__4; int __gen_e_acsl_eq_4; - __gmpz_init_set_si(__gen_e_acsl__7,(long)__gen_e_acsl_at_4); - __gmpz_init_set_si(__gen_e_acsl__8,(long)0); - __gen_e_acsl_eq_4 = __gmpz_cmp((__mpz_struct const *)(__gen_e_acsl__7), - (__mpz_struct const *)(__gen_e_acsl__8)); + __gmpz_init_set_ui(__gen_e_acsl__4,(unsigned long)0); + __gen_e_acsl_eq_4 = __gmpz_cmp((__mpz_struct const *)(__gen_e_acsl_at_3), + (__mpz_struct const *)(__gen_e_acsl__4)); __e_acsl_assert(__gen_e_acsl_eq_4 == 0,(char *)"Assertion",(char *)"f", (char *)"\\at(\\at(A,Pre),F) == 0",14); - __gmpz_clear(__gen_e_acsl__7); - __gmpz_clear(__gen_e_acsl__8); + __gmpz_clear(__gen_e_acsl__4); } A = 3; + __gmpz_clear(__gen_e_acsl_at); + __gmpz_clear(__gen_e_acsl_at_2); + __gmpz_clear(__gen_e_acsl_at_3); return; } void g(int *p, int *q) { - int __gen_e_acsl_at_3; - int __gen_e_acsl_at_2; - int __gen_e_acsl_at; + unsigned long __gen_e_acsl_at_3; + mpz_t __gen_e_acsl_at_2; + unsigned long __gen_e_acsl_at; __e_acsl_store_block((void *)(& p),8UL); __e_acsl_store_block((void *)(& q),8UL); __e_acsl_initialize((void *)p,sizeof(int)); @@ -94,17 +105,17 @@ void g(int *p, int *q) int __gen_e_acsl_valid_read_3; __gen_e_acsl_valid_read_3 = __e_acsl_valid_read((void *)q,sizeof(int)); __e_acsl_assert(__gen_e_acsl_valid_read_3,(char *)"RTE",(char *)"g", - (char *)"mem_access: \\valid_read(q)",32); - __e_acsl_store_block((void *)(& __gen_e_acsl_at_3),4UL); - __gen_e_acsl_at_3 = *q; + (char *)"mem_access: \\valid_read(q)",28); + __e_acsl_store_block((void *)(& __gen_e_acsl_at_3),8UL); + __gen_e_acsl_at_3 = (unsigned long)*q; } { int __gen_e_acsl_valid_read; __gen_e_acsl_valid_read = __e_acsl_valid_read((void *)q,sizeof(int)); __e_acsl_assert(__gen_e_acsl_valid_read,(char *)"RTE",(char *)"g", - (char *)"mem_access: \\valid_read(q)",30); - __e_acsl_store_block((void *)(& __gen_e_acsl_at),4UL); - __gen_e_acsl_at = *q; + (char *)"mem_access: \\valid_read(q)",26); + __e_acsl_store_block((void *)(& __gen_e_acsl_at),8UL); + __gen_e_acsl_at = (unsigned long)*q; } __e_acsl_initialize((void *)p,sizeof(int)); *p = 2; @@ -115,27 +126,27 @@ void g(int *p, int *q) L2: { int __gen_e_acsl_valid_read_2; - __gen_e_acsl_valid_read_2 = __e_acsl_valid_read((void *)(p + (long)__gen_e_acsl_at), + mpz_t __gen_e_acsl_; + __gen_e_acsl_valid_read_2 = __e_acsl_valid_read((void *)(p + __gen_e_acsl_at), sizeof(int)); __e_acsl_assert(__gen_e_acsl_valid_read_2,(char *)"RTE",(char *)"g", - (char *)"mem_access: \\valid_read(p+(long)__gen_e_acsl_at)", - 30); - __e_acsl_store_block((void *)(& __gen_e_acsl_at_2),4UL); - __gen_e_acsl_at_2 = *(p + (long)__gen_e_acsl_at); + (char *)"mem_access: \\valid_read(p+__gen_e_acsl_at)", + 26); + __gmpz_init_set_si(__gen_e_acsl_,(long)*(p + __gen_e_acsl_at)); + __gmpz_init_set(__gen_e_acsl_at_2, + (__mpz_struct const *)(__gen_e_acsl_)); + __gmpz_clear(__gen_e_acsl_); } A = 4; /*@ assert \at(*(p+\at(*q,L1)),L2) ≡ 2; */ { - mpz_t __gen_e_acsl_; mpz_t __gen_e_acsl__2; int __gen_e_acsl_eq; - __gmpz_init_set_si(__gen_e_acsl_,(long)__gen_e_acsl_at_2); - __gmpz_init_set_si(__gen_e_acsl__2,(long)2); - __gen_e_acsl_eq = __gmpz_cmp((__mpz_struct const *)(__gen_e_acsl_), + __gmpz_init_set_ui(__gen_e_acsl__2,(unsigned long)2); + __gen_e_acsl_eq = __gmpz_cmp((__mpz_struct const *)(__gen_e_acsl_at_2), (__mpz_struct const *)(__gen_e_acsl__2)); __e_acsl_assert(__gen_e_acsl_eq == 0,(char *)"Assertion",(char *)"g", - (char *)"\\at(*(p+\\at(*q,L1)),L2) == 2",30); - __gmpz_clear(__gen_e_acsl_); + (char *)"\\at(*(p+\\at(*q,L1)),L2) == 2",26); __gmpz_clear(__gen_e_acsl__2); } L3: @@ -144,18 +155,18 @@ void g(int *p, int *q) mpz_t __gen_e_acsl__3; mpz_t __gen_e_acsl__4; int __gen_e_acsl_eq_2; - __gmpz_init_set_si(__gen_e_acsl__3, - (long)*(p + (long)__gen_e_acsl_at_3)); - __gmpz_init_set_si(__gen_e_acsl__4,(long)2); + __gmpz_init_set_si(__gen_e_acsl__3,(long)*(p + __gen_e_acsl_at_3)); + __gmpz_init_set_ui(__gen_e_acsl__4,(unsigned long)2); __gen_e_acsl_eq_2 = __gmpz_cmp((__mpz_struct const *)(__gen_e_acsl__3), (__mpz_struct const *)(__gen_e_acsl__4)); __e_acsl_assert(__gen_e_acsl_eq_2 == 0,(char *)"Assertion",(char *)"g", - (char *)"\\at(*(p+\\at(*q,L1)),Here) == 2",32); + (char *)"\\at(*(p+\\at(*q,L1)),Here) == 2",28); __gmpz_clear(__gen_e_acsl__3); __gmpz_clear(__gen_e_acsl__4); } __e_acsl_delete_block((void *)(& p)); __e_acsl_delete_block((void *)(& q)); + __gmpz_clear(__gen_e_acsl_at_2); return; } @@ -172,9 +183,8 @@ int h(int x) int main(void) { - int __gen_e_acsl_at_3; mpz_t __gen_e_acsl_at_2; - int __gen_e_acsl_at; + mpz_t __gen_e_acsl_at; int __retres; int x; int t[2]; @@ -184,36 +194,46 @@ int main(void) __e_acsl_full_init((void *)(& x)); x = __gen_e_acsl_h(0); L: - __e_acsl_store_block((void *)(& __gen_e_acsl_at_3),4UL); - __gen_e_acsl_at_3 = x; { - mpz_t __gen_e_acsl_x_2; - mpz_t __gen_e_acsl__4; + mpz_t __gen_e_acsl_x_4; + __gmpz_init_set_si(__gen_e_acsl_x_4,(long)x); + __gmpz_init_set(__gen_e_acsl_at, + (__mpz_struct const *)(__gen_e_acsl_x_4)); + __gmpz_clear(__gen_e_acsl_x_4); + } + { + mpz_t __gen_e_acsl_x_3; + mpz_t __gen_e_acsl__3; mpz_t __gen_e_acsl_add; - __gmpz_init_set_si(__gen_e_acsl_x_2,(long)x); - __gmpz_init_set_si(__gen_e_acsl__4,(long)1); + __gmpz_init_set_si(__gen_e_acsl_x_3,(long)x); + __gmpz_init_set_ui(__gen_e_acsl__3,(unsigned long)1); __gmpz_init(__gen_e_acsl_add); - __gmpz_add(__gen_e_acsl_add,(__mpz_struct const *)(__gen_e_acsl_x_2), - (__mpz_struct const *)(__gen_e_acsl__4)); + __gmpz_add(__gen_e_acsl_add,(__mpz_struct const *)(__gen_e_acsl_x_3), + (__mpz_struct const *)(__gen_e_acsl__3)); __gmpz_init_set(__gen_e_acsl_at_2, (__mpz_struct const *)(__gen_e_acsl_add)); - __gmpz_clear(__gen_e_acsl_x_2); - __gmpz_clear(__gen_e_acsl__4); + __gmpz_clear(__gen_e_acsl_x_3); + __gmpz_clear(__gen_e_acsl__3); __gmpz_clear(__gen_e_acsl_add); } - __e_acsl_store_block((void *)(& __gen_e_acsl_at),4UL); - __gen_e_acsl_at = x; + { + mpz_t __gen_e_acsl_x_2; + __gmpz_init_set_si(__gen_e_acsl_x_2,(long)x); + __gmpz_init_set(__gen_e_acsl_at, + (__mpz_struct const *)(__gen_e_acsl_x_2)); + __gmpz_clear(__gen_e_acsl_x_2); + } /*@ assert x ≡ 0; */ { mpz_t __gen_e_acsl_x; mpz_t __gen_e_acsl_; int __gen_e_acsl_eq; __gmpz_init_set_si(__gen_e_acsl_x,(long)x); - __gmpz_init_set_si(__gen_e_acsl_,(long)0); + __gmpz_init_set_ui(__gen_e_acsl_,(unsigned long)0); __gen_e_acsl_eq = __gmpz_cmp((__mpz_struct const *)(__gen_e_acsl_x), (__mpz_struct const *)(__gen_e_acsl_)); __e_acsl_assert(__gen_e_acsl_eq == 0,(char *)"Assertion", - (char *)"main",(char *)"x == 0",46); + (char *)"main",(char *)"x == 0",43); __gmpz_clear(__gen_e_acsl_x); __gmpz_clear(__gen_e_acsl_); } @@ -225,49 +245,44 @@ int main(void) /*@ assert \at(x,L) ≡ 0; */ { mpz_t __gen_e_acsl__2; - mpz_t __gen_e_acsl__3; int __gen_e_acsl_eq_2; - __gmpz_init_set_si(__gen_e_acsl__2,(long)__gen_e_acsl_at); - __gmpz_init_set_si(__gen_e_acsl__3,(long)0); - __gen_e_acsl_eq_2 = __gmpz_cmp((__mpz_struct const *)(__gen_e_acsl__2), - (__mpz_struct const *)(__gen_e_acsl__3)); + __gmpz_init_set_ui(__gen_e_acsl__2,(unsigned long)0); + __gen_e_acsl_eq_2 = __gmpz_cmp((__mpz_struct const *)(__gen_e_acsl_at), + (__mpz_struct const *)(__gen_e_acsl__2)); __e_acsl_assert(__gen_e_acsl_eq_2 == 0,(char *)"Assertion", - (char *)"main",(char *)"\\at(x,L) == 0",51); + (char *)"main",(char *)"\\at(x,L) == 0",48); __gmpz_clear(__gen_e_acsl__2); - __gmpz_clear(__gen_e_acsl__3); } /*@ assert \at(x+1,L) ≡ 1; */ { - mpz_t __gen_e_acsl__5; + mpz_t __gen_e_acsl__4; int __gen_e_acsl_eq_3; - __gmpz_init_set_si(__gen_e_acsl__5,(long)1); + __gmpz_init_set_ui(__gen_e_acsl__4,(unsigned long)1); __gen_e_acsl_eq_3 = __gmpz_cmp((__mpz_struct const *)(__gen_e_acsl_at_2), - (__mpz_struct const *)(__gen_e_acsl__5)); + (__mpz_struct const *)(__gen_e_acsl__4)); __e_acsl_assert(__gen_e_acsl_eq_3 == 0,(char *)"Assertion", - (char *)"main",(char *)"\\at(x+1,L) == 1",52); - __gmpz_clear(__gen_e_acsl__5); + (char *)"main",(char *)"\\at(x+1,L) == 1",49); + __gmpz_clear(__gen_e_acsl__4); } /*@ assert \at(x,L)+1 ≡ 1; */ { - mpz_t __gen_e_acsl__6; - mpz_t __gen_e_acsl__7; + mpz_t __gen_e_acsl__5; mpz_t __gen_e_acsl_add_2; int __gen_e_acsl_eq_4; - __gmpz_init_set_si(__gen_e_acsl__6,(long)__gen_e_acsl_at_3); - __gmpz_init_set_si(__gen_e_acsl__7,(long)1); + __gmpz_init_set_ui(__gen_e_acsl__5,(unsigned long)1); __gmpz_init(__gen_e_acsl_add_2); - __gmpz_add(__gen_e_acsl_add_2,(__mpz_struct const *)(__gen_e_acsl__6), - (__mpz_struct const *)(__gen_e_acsl__7)); + __gmpz_add(__gen_e_acsl_add_2,(__mpz_struct const *)(__gen_e_acsl_at), + (__mpz_struct const *)(__gen_e_acsl__5)); __gen_e_acsl_eq_4 = __gmpz_cmp((__mpz_struct const *)(__gen_e_acsl_add_2), - (__mpz_struct const *)(__gen_e_acsl__7)); + (__mpz_struct const *)(__gen_e_acsl__5)); __e_acsl_assert(__gen_e_acsl_eq_4 == 0,(char *)"Assertion", - (char *)"main",(char *)"\\at(x,L)+1 == 1",53); - __gmpz_clear(__gen_e_acsl__6); - __gmpz_clear(__gen_e_acsl__7); + (char *)"main",(char *)"\\at(x,L)+1 == 1",50); + __gmpz_clear(__gen_e_acsl__5); __gmpz_clear(__gen_e_acsl_add_2); } g(t,& x); __retres = 0; + __gmpz_clear(__gen_e_acsl_at); __gmpz_clear(__gen_e_acsl_at_2); __e_acsl_delete_block((void *)(t)); __e_acsl_delete_block((void *)(& x)); @@ -278,26 +293,28 @@ int main(void) /*@ ensures \result ≡ \old(x); */ int __gen_e_acsl_h(int x) { - int __gen_e_acsl_at; + mpz_t __gen_e_acsl_at; int __retres; __e_acsl_store_block((void *)(& __retres),4UL); __e_acsl_store_block((void *)(& x),4UL); - __e_acsl_store_block((void *)(& __gen_e_acsl_at),4UL); - __gen_e_acsl_at = x; + { + mpz_t __gen_e_acsl_x; + __gmpz_init_set_si(__gen_e_acsl_x,(long)x); + __gmpz_init_set(__gen_e_acsl_at,(__mpz_struct const *)(__gen_e_acsl_x)); + __gmpz_clear(__gen_e_acsl_x); + } __retres = h(x); { mpz_t __gen_e_acsl_result; - mpz_t __gen_e_acsl_; int __gen_e_acsl_eq; __gmpz_init_set_si(__gen_e_acsl_result,(long)__retres); - __gmpz_init_set_si(__gen_e_acsl_,(long)__gen_e_acsl_at); __gen_e_acsl_eq = __gmpz_cmp((__mpz_struct const *)(__gen_e_acsl_result), - (__mpz_struct const *)(__gen_e_acsl_)); + (__mpz_struct const *)(__gen_e_acsl_at)); __e_acsl_assert(__gen_e_acsl_eq == 0,(char *)"Postcondition",(char *)"h", - (char *)"\\result == \\old(x)",38); + (char *)"\\result == \\old(x)",35); __e_acsl_delete_block((void *)(& x)); __gmpz_clear(__gen_e_acsl_result); - __gmpz_clear(__gen_e_acsl_); + __gmpz_clear(__gen_e_acsl_at); __e_acsl_delete_block((void *)(& __retres)); return __retres; } @@ -306,21 +323,24 @@ int __gen_e_acsl_h(int x) /*@ ensures \at(A,Post) ≡ 3; */ void __gen_e_acsl_f(void) { - int __gen_e_acsl_at; + mpz_t __gen_e_acsl_at; f(); { mpz_t __gen_e_acsl_; - mpz_t __gen_e_acsl__2; int __gen_e_acsl_eq; - __gen_e_acsl_at = A; - __gmpz_init_set_si(__gen_e_acsl_,(long)__gen_e_acsl_at); - __gmpz_init_set_si(__gen_e_acsl__2,(long)3); - __gen_e_acsl_eq = __gmpz_cmp((__mpz_struct const *)(__gen_e_acsl_), - (__mpz_struct const *)(__gen_e_acsl__2)); + { + mpz_t __gen_e_acsl_A; + __gmpz_init_set_si(__gen_e_acsl_A,(long)A); + __gmpz_init_set(__gen_e_acsl_at,(__mpz_struct const *)(__gen_e_acsl_A)); + __gmpz_clear(__gen_e_acsl_A); + } + __gmpz_init_set_ui(__gen_e_acsl_,(unsigned long)3); + __gen_e_acsl_eq = __gmpz_cmp((__mpz_struct const *)(__gen_e_acsl_at), + (__mpz_struct const *)(__gen_e_acsl_)); __e_acsl_assert(__gen_e_acsl_eq == 0,(char *)"Postcondition",(char *)"f", (char *)"\\at(A,Post) == 3",7); __gmpz_clear(__gen_e_acsl_); - __gmpz_clear(__gen_e_acsl__2); + __gmpz_clear(__gen_e_acsl_at); return; } } diff --git a/src/plugins/e-acsl/typing.ml b/src/plugins/e-acsl/typing.ml index b50e6c300c668131bb57e8dbb325b8e65d465fe3..58954c2c2d50aa4fb430dd73db2d4eb78f253c1a 100644 --- a/src/plugins/e-acsl/typing.ml +++ b/src/plugins/e-acsl/typing.ml @@ -329,7 +329,7 @@ let rec type_term ~force ~ctx t = dup ctx | Tat (t, _) - | TLogic_coerce (_, t) -> dup (type_term ~force:false ~ctx t).ty + | TLogic_coerce (_, t) -> dup (type_term ~force ~ctx t).ty | TCoerceE (t1, t2) -> let ctx =