From fc6c62e2143418130162d72f5777ff226a083863 Mon Sep 17 00:00:00 2001 From: Julien Signoles <julien.signoles@cea.fr> Date: Wed, 29 Jun 2011 08:19:01 +0000 Subject: [PATCH] [e-acsl] fixed bug with casts from integer to integral C type [e-acsl] support of field accesses in logic [e-acsl] support of array accesses (yet missing guards) in logic [e-acsl] support of pointer dereferences (yet missing guards) in logic [e-acsl] support of \null in logic --- src/plugins/e-acsl/TODO | 6 +- src/plugins/e-acsl/share/e-acsl/e_acsl_gmp.h | 10 + .../e-acsl/tests/e-acsl-runtime/array.i | 17 + .../e-acsl/tests/e-acsl-runtime/cast.i | 5 +- .../e-acsl/tests/e-acsl-runtime/null.i | 9 + .../e-acsl-runtime/oracle/addrOf.res.oracle | 2 +- .../e-acsl-runtime/oracle/arith.res.oracle | 492 ++++++------ .../e-acsl-runtime/oracle/array.err.oracle | 0 .../e-acsl-runtime/oracle/array.res.oracle | 192 +++++ .../e-acsl-runtime/oracle/cast.res.oracle | 103 ++- .../oracle/comparison.res.oracle | 158 ++-- .../oracle/function_contract.res.oracle | 258 +++--- .../tests/e-acsl-runtime/oracle/gen_addrOf.c | 12 +- .../tests/e-acsl-runtime/oracle/gen_arith.c | 12 +- .../tests/e-acsl-runtime/oracle/gen_array.c | 604 ++++++++++++++ .../tests/e-acsl-runtime/oracle/gen_cast.c | 40 +- .../e-acsl-runtime/oracle/gen_comparison.c | 12 +- .../tests/e-acsl-runtime/oracle/gen_false.c | 12 +- .../oracle/gen_function_contract.c | 12 +- .../oracle/gen_integer_constant.c | 12 +- .../tests/e-acsl-runtime/oracle/gen_lazy.c | 12 +- .../oracle/gen_nested_code_annot.c | 12 +- .../tests/e-acsl-runtime/oracle/gen_not.c | 12 +- .../tests/e-acsl-runtime/oracle/gen_null.c | 577 ++++++++++++++ .../oracle/gen_other_constants.c | 12 +- .../tests/e-acsl-runtime/oracle/gen_ptr.c | 738 ++++++++++++++++++ .../tests/e-acsl-runtime/oracle/gen_sizeof.c | 12 +- .../e-acsl-runtime/oracle/gen_stmt_contract.c | 12 +- .../tests/e-acsl-runtime/oracle/gen_true.c | 12 +- .../oracle/integer_constant.res.oracle | 60 +- .../e-acsl-runtime/oracle/lazy.res.oracle | 176 ++--- .../oracle/nested_code_annot.res.oracle | 104 +-- .../e-acsl-runtime/oracle/not.res.oracle | 2 +- .../e-acsl-runtime/oracle/null.err.oracle | 0 .../e-acsl-runtime/oracle/null.res.oracle | 96 +++ .../oracle/other_constants.res.oracle | 28 +- .../e-acsl-runtime/oracle/ptr.err.oracle | 0 .../e-acsl-runtime/oracle/ptr.res.oracle | 720 +++++++++++++++++ .../e-acsl-runtime/oracle/sizeof.res.oracle | 4 +- .../oracle/stmt_contract.res.oracle | 372 ++++----- .../e-acsl-runtime/oracle/true.res.oracle | 2 +- src/plugins/e-acsl/tests/e-acsl-runtime/ptr.i | 29 + .../tests/e-acsl-runtime/stmt_contract.i | 1 - src/plugins/e-acsl/visit.ml | 113 ++- 44 files changed, 4141 insertions(+), 933 deletions(-) create mode 100644 src/plugins/e-acsl/tests/e-acsl-runtime/array.i create mode 100644 src/plugins/e-acsl/tests/e-acsl-runtime/null.i create mode 100644 src/plugins/e-acsl/tests/e-acsl-runtime/oracle/array.err.oracle create mode 100644 src/plugins/e-acsl/tests/e-acsl-runtime/oracle/array.res.oracle create mode 100644 src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_array.c create mode 100644 src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_null.c create mode 100644 src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr.c create mode 100644 src/plugins/e-acsl/tests/e-acsl-runtime/oracle/null.err.oracle create mode 100644 src/plugins/e-acsl/tests/e-acsl-runtime/oracle/null.res.oracle create mode 100644 src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ptr.err.oracle create mode 100644 src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ptr.res.oracle create mode 100644 src/plugins/e-acsl/tests/e-acsl-runtime/ptr.i diff --git a/src/plugins/e-acsl/TODO b/src/plugins/e-acsl/TODO index 04583ed799f..02fddb6e621 100644 --- a/src/plugins/e-acsl/TODO +++ b/src/plugins/e-acsl/TODO @@ -21,16 +21,20 @@ ######### - stmt_contracts et only_behaviors... pas sur que je fasse ce qu'il faut -- pb test stmt_contracts.i - tester les opérations binaires sur les pointeurs (requiert complex left value) - tester plusieurs fonctions contenant des annotations - améliorer test "integer_constant.i" quand bug fixed #745 - améliorer test "arith.i" quand bug fixed #751 +- améliorer test "ptr.i" quand bug fixed #751 +- structs +- unions #################### # AVANT LA DISTRIB # #################### +- documentation + en lien avec bts #743: - make distrib - headers (copyright 2011) diff --git a/src/plugins/e-acsl/share/e-acsl/e_acsl_gmp.h b/src/plugins/e-acsl/share/e-acsl/e_acsl_gmp.h index ece341eca97..690706017bb 100644 --- a/src/plugins/e-acsl/share/e-acsl/e_acsl_gmp.h +++ b/src/plugins/e-acsl/share/e-acsl/e_acsl_gmp.h @@ -73,3 +73,13 @@ extern void mpz_cdiv_q(mpz_t z1, const mpz_t z2, const mpz_t z3); @ requires \valid(z3); @ assigns *z1; */ extern void mpz_mod(mpz_t z1, const mpz_t z2, const mpz_t z3); + +// coercions to C int + +/*@ requires \valid(z); + @ assigns \nothing; */ +extern long mpz_get_si(const mpz_t z); + +/*@ requires \valid(z); + @ assigns \nothing; */ +extern unsigned long mpz_get_ui(const mpz_t z); diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/array.i b/src/plugins/e-acsl/tests/e-acsl-runtime/array.i new file mode 100644 index 00000000000..daca1bb83b9 --- /dev/null +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/array.i @@ -0,0 +1,17 @@ +/* run.config + COMMENT: arrays + EXECNOW: LOG gen_array.c BIN gen_array.out FRAMAC_SHARE=./share @frama-c@ ./tests/e-acsl-runtime/array.i -e-acsl-project p -e-acsl-include-headers -then-on p -print -ocode ./tests/e-acsl-runtime/result/gen_array.c > /dev/null && gcc -o ./tests/e-acsl-runtime/result/gen_array.out -lgmp ./tests/e-acsl-runtime/result/gen_array.c && ./tests/e-acsl-runtime/result/gen_array.out +*/ + +int T1[3],T2[4]; + +int main(void) { + + for(int i = 0; i < 3; i++) T1[i] = i; + for(int i = 0; i < 4; i++) T2[i] = 2*i; + + /*@ assert T1[0] == T2[0]; */ + /*@ assert T1[1] != T2[1]; */ + + return 0; +} diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/cast.i b/src/plugins/e-acsl/tests/e-acsl-runtime/cast.i index a93d8a43637..a638febc84a 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/cast.i +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/cast.i @@ -1,6 +1,6 @@ /* run.config COMMENT: cast - EXECNOW: LOG gen_cast.c BIN gen_cast.out FRAMAC_SHARE=./share @frama-c@ ./tests/e-acsl-runtime/cast.i -e-acsl-project p -e-acsl-include-headers -then-on p -print -ocode ./tests/e-acsl-runtime/result/gen_cast.c > /dev/null && gcc -o ./tests/e-acsl-runtime/result/gen_cast.out ./tests/e-acsl-runtime/result/gen_cast.c && ./tests/e-acsl-runtime/result/gen_cast.out + EXECNOW: LOG gen_cast.c BIN gen_cast.out FRAMAC_SHARE=./share @frama-c@ ./tests/e-acsl-runtime/cast.i -e-acsl-project p -e-acsl-include-headers -then-on p -print -ocode ./tests/e-acsl-runtime/result/gen_cast.c > /dev/null && gcc -o ./tests/e-acsl-runtime/result/gen_cast.out -lgmp ./tests/e-acsl-runtime/result/gen_cast.c && ./tests/e-acsl-runtime/result/gen_cast.out */ int main(void) { @@ -8,5 +8,8 @@ int main(void) { int y = 0; /*@ assert (int)x == y; */ ; /*@ assert x == (long)y; */ ; + /*@ assert y == (int)0; */ ; // cast from integer to int + /*@ assert (unsigned int) y == (unsigned int)0; */ ; /* cast from integer + to unsigned int */ return 0; } diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/null.i b/src/plugins/e-acsl/tests/e-acsl-runtime/null.i new file mode 100644 index 00000000000..3ffb6169483 --- /dev/null +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/null.i @@ -0,0 +1,9 @@ +/* run.config + COMMENT: assert \null == 0 + EXECNOW: LOG gen_null.c BIN gen_null.out FRAMAC_SHARE=./share @frama-c@ ./tests/e-acsl-runtime/null.i -e-acsl-project p -e-acsl-include-headers -then-on p -print -ocode ./tests/e-acsl-runtime/result/gen_null.c > /dev/null && gcc -o ./tests/e-acsl-runtime/result/gen_null.out -lgmp ./tests/e-acsl-runtime/result/gen_null.c && ./tests/e-acsl-runtime/result/gen_null.out +*/ + +int main(void) { + /*@ assert \null == 0; */ + return 0; +} diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/addrOf.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/addrOf.res.oracle index 053bf7e9d44..706fb2340be 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/addrOf.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/addrOf.res.oracle @@ -2,7 +2,7 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:122:[value] Assertion got status valid. +PROJECT_FILE.i:132:[value] Assertion got status valid. [value] Recording results for main [value] done for function main [value] ====== VALUES COMPUTED ====== diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/arith.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/arith.res.oracle index 12974be380e..57d6b0476ea 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/arith.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/arith.res.oracle @@ -2,742 +2,742 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:124:[value] Assertion got status valid. +PROJECT_FILE.i:134:[value] Assertion got status valid. [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:126. + Called from PROJECT_FILE.i:136. PROJECT_FILE.i:29:[value] Function mpz_init_set_si: postcondition got status unknown [value] Done for function mpz_init_set_si [value] computing for function mpz_init <- main. - Called from PROJECT_FILE.i:126. + Called from PROJECT_FILE.i:136. PROJECT_FILE.i:21:[value] Function mpz_init: postcondition got status unknown [value] Done for function mpz_init [value] computing for function mpz_neg <- main. - Called from PROJECT_FILE.i:127. + Called from PROJECT_FILE.i:137. PROJECT_FILE.i:55:[value] Function mpz_neg: precondition got status valid PROJECT_FILE.i:56:[value] Function mpz_neg: precondition got status valid [value] Done for function mpz_neg [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:127. + Called from PROJECT_FILE.i:137. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:128. + Called from PROJECT_FILE.i:138. PROJECT_FILE.i:45:[value] Function mpz_cmp: precondition got status valid PROJECT_FILE.i:46:[value] Function mpz_cmp: precondition got status valid [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:129. + Called from PROJECT_FILE.i:139. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. -PROJECT_FILE.i:105:[value] Function exit: postcondition got status invalid + Called from PROJECT_FILE.i:125. +PROJECT_FILE.i:115:[value] Function exit: postcondition got status invalid [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:130. + Called from PROJECT_FILE.i:140. PROJECT_FILE.i:39:[value] Function mpz_clear: precondition got status valid [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:130. + Called from PROJECT_FILE.i:140. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:130. + Called from PROJECT_FILE.i:140. [value] Done for function mpz_clear -PROJECT_FILE.i:133:[value] Assertion got status valid. +PROJECT_FILE.i:143:[value] Assertion got status valid. [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:135. + Called from PROJECT_FILE.i:145. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:135. + Called from PROJECT_FILE.i:145. [value] Done for function mpz_init_set_si [value] computing for function mpz_init <- main. - Called from PROJECT_FILE.i:136. + Called from PROJECT_FILE.i:146. [value] Done for function mpz_init [value] computing for function mpz_neg <- main. - Called from PROJECT_FILE.i:136. + Called from PROJECT_FILE.i:146. [value] Done for function mpz_neg [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:137. + Called from PROJECT_FILE.i:147. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:138. + Called from PROJECT_FILE.i:148. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:139. + Called from PROJECT_FILE.i:149. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:139. + Called from PROJECT_FILE.i:149. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:139. + Called from PROJECT_FILE.i:149. [value] Done for function mpz_clear -PROJECT_FILE.i:142:[value] Assertion got status valid. +PROJECT_FILE.i:152:[value] Assertion got status valid. [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:144. + Called from PROJECT_FILE.i:154. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:144. + Called from PROJECT_FILE.i:154. [value] Done for function mpz_init_set_si [value] computing for function mpz_init <- main. - Called from PROJECT_FILE.i:145. + Called from PROJECT_FILE.i:155. [value] Done for function mpz_init [value] computing for function mpz_com <- main. - Called from PROJECT_FILE.i:145. + Called from PROJECT_FILE.i:155. [kernel] warning: No code for function mpz_com, default assigns generated [value] Done for function mpz_com [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:146. + Called from PROJECT_FILE.i:156. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:147. + Called from PROJECT_FILE.i:157. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:148. + Called from PROJECT_FILE.i:158. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:148. + Called from PROJECT_FILE.i:158. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:148. + Called from PROJECT_FILE.i:158. [value] Done for function mpz_clear -PROJECT_FILE.i:151:[value] Assertion got status valid. +PROJECT_FILE.i:161:[value] Assertion got status valid. [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:153. + Called from PROJECT_FILE.i:163. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:154. + Called from PROJECT_FILE.i:164. [value] Done for function mpz_init_set_si [value] computing for function mpz_init <- main. - Called from PROJECT_FILE.i:154. + Called from PROJECT_FILE.i:164. [value] Done for function mpz_init [value] computing for function mpz_add <- main. - Called from PROJECT_FILE.i:155. + Called from PROJECT_FILE.i:165. PROJECT_FILE.i:60:[value] Function mpz_add: precondition got status valid PROJECT_FILE.i:61:[value] Function mpz_add: precondition got status valid PROJECT_FILE.i:62:[value] Function mpz_add: precondition got status valid [value] Done for function mpz_add [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:155. + Called from PROJECT_FILE.i:165. [value] Done for function mpz_init_set_si [value] computing for function mpz_init <- main. - Called from PROJECT_FILE.i:156. + Called from PROJECT_FILE.i:166. [value] Done for function mpz_init [value] computing for function mpz_neg <- main. - Called from PROJECT_FILE.i:156. + Called from PROJECT_FILE.i:166. [value] Done for function mpz_neg [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:157. + Called from PROJECT_FILE.i:167. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:158. + Called from PROJECT_FILE.i:168. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:159. + Called from PROJECT_FILE.i:169. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:159. + Called from PROJECT_FILE.i:169. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:159. + Called from PROJECT_FILE.i:169. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:160. + Called from PROJECT_FILE.i:170. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:160. + Called from PROJECT_FILE.i:170. [value] Done for function mpz_clear -PROJECT_FILE.i:163:[value] Assertion got status valid. +PROJECT_FILE.i:173:[value] Assertion got status valid. [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:165. + Called from PROJECT_FILE.i:175. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:166. + Called from PROJECT_FILE.i:176. [value] Done for function mpz_init_set_si [value] computing for function mpz_init <- main. - Called from PROJECT_FILE.i:166. + Called from PROJECT_FILE.i:176. [value] Done for function mpz_init [value] computing for function mpz_sub <- main. - Called from PROJECT_FILE.i:167. + Called from PROJECT_FILE.i:177. PROJECT_FILE.i:66:[value] Function mpz_sub: precondition got status valid PROJECT_FILE.i:67:[value] Function mpz_sub: precondition got status valid PROJECT_FILE.i:68:[value] Function mpz_sub: precondition got status valid [value] Done for function mpz_sub [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:167. + Called from PROJECT_FILE.i:177. [value] Done for function mpz_init_set_si [value] computing for function mpz_init <- main. - Called from PROJECT_FILE.i:168. + Called from PROJECT_FILE.i:178. [value] Done for function mpz_init [value] computing for function mpz_neg <- main. - Called from PROJECT_FILE.i:168. + Called from PROJECT_FILE.i:178. [value] Done for function mpz_neg [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:169. + Called from PROJECT_FILE.i:179. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:170. + Called from PROJECT_FILE.i:180. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:171. + Called from PROJECT_FILE.i:181. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:171. + Called from PROJECT_FILE.i:181. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:171. + Called from PROJECT_FILE.i:181. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:172. + Called from PROJECT_FILE.i:182. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:172. + Called from PROJECT_FILE.i:182. [value] Done for function mpz_clear -PROJECT_FILE.i:175:[value] Assertion got status valid. +PROJECT_FILE.i:185:[value] Assertion got status valid. [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:177. + Called from PROJECT_FILE.i:187. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:178. + Called from PROJECT_FILE.i:188. [value] Done for function mpz_init_set_si [value] computing for function mpz_init <- main. - Called from PROJECT_FILE.i:178. + Called from PROJECT_FILE.i:188. [value] Done for function mpz_init [value] computing for function mpz_mul <- main. - Called from PROJECT_FILE.i:179. + Called from PROJECT_FILE.i:189. PROJECT_FILE.i:72:[value] Function mpz_mul: precondition got status valid PROJECT_FILE.i:73:[value] Function mpz_mul: precondition got status valid PROJECT_FILE.i:74:[value] Function mpz_mul: precondition got status valid [value] Done for function mpz_mul [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:179. + Called from PROJECT_FILE.i:189. [value] Done for function mpz_init_set_si [value] computing for function mpz_init <- main. - Called from PROJECT_FILE.i:180. + Called from PROJECT_FILE.i:190. [value] Done for function mpz_init [value] computing for function mpz_neg <- main. - Called from PROJECT_FILE.i:180. + Called from PROJECT_FILE.i:190. [value] Done for function mpz_neg [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:181. + Called from PROJECT_FILE.i:191. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:182. + Called from PROJECT_FILE.i:192. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:183. + Called from PROJECT_FILE.i:193. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:183. + Called from PROJECT_FILE.i:193. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:183. + Called from PROJECT_FILE.i:193. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:184. + Called from PROJECT_FILE.i:194. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:184. + Called from PROJECT_FILE.i:194. [value] Done for function mpz_clear -PROJECT_FILE.i:187:[value] Assertion got status valid. +PROJECT_FILE.i:197:[value] Assertion got status valid. [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:190. + Called from PROJECT_FILE.i:200. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:190. + Called from PROJECT_FILE.i:200. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:191. + Called from PROJECT_FILE.i:201. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_ui <- main. - Called from PROJECT_FILE.i:191. + Called from PROJECT_FILE.i:201. PROJECT_FILE.i:25:[value] Function mpz_init_set_ui: postcondition got status unknown [value] Done for function mpz_init_set_ui [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:192. + Called from PROJECT_FILE.i:202. [value] Done for function mpz_cmp [value] computing for function mpz_init <- main. - Called from PROJECT_FILE.i:192. + Called from PROJECT_FILE.i:202. [value] Done for function mpz_init -PROJECT_FILE.i:193:[value] Assertion got status valid. +PROJECT_FILE.i:203:[value] Assertion got status valid. [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:194. + Called from PROJECT_FILE.i:204. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_cdiv_q <- main. - Called from PROJECT_FILE.i:195. + Called from PROJECT_FILE.i:205. PROJECT_FILE.i:78:[value] Function mpz_cdiv_q: precondition got status valid PROJECT_FILE.i:79:[value] Function mpz_cdiv_q: precondition got status valid PROJECT_FILE.i:80:[value] Function mpz_cdiv_q: precondition got status valid [value] Done for function mpz_cdiv_q [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:195. + Called from PROJECT_FILE.i:205. [value] Done for function mpz_init_set_si [value] computing for function mpz_init <- main. - Called from PROJECT_FILE.i:196. + Called from PROJECT_FILE.i:206. [value] Done for function mpz_init [value] computing for function mpz_neg <- main. - Called from PROJECT_FILE.i:196. + Called from PROJECT_FILE.i:206. [value] Done for function mpz_neg [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:197. + Called from PROJECT_FILE.i:207. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:198. + Called from PROJECT_FILE.i:208. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:199. + Called from PROJECT_FILE.i:209. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:199. + Called from PROJECT_FILE.i:209. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:199. + Called from PROJECT_FILE.i:209. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:200. + Called from PROJECT_FILE.i:210. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:200. + Called from PROJECT_FILE.i:210. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:200. + Called from PROJECT_FILE.i:210. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:201. + Called from PROJECT_FILE.i:211. [value] Done for function mpz_clear -PROJECT_FILE.i:204:[value] Assertion got status valid. +PROJECT_FILE.i:214:[value] Assertion got status valid. [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:207. + Called from PROJECT_FILE.i:217. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:207. + Called from PROJECT_FILE.i:217. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:208. + Called from PROJECT_FILE.i:218. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_ui <- main. - Called from PROJECT_FILE.i:208. + Called from PROJECT_FILE.i:218. [value] Done for function mpz_init_set_ui [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:209. + Called from PROJECT_FILE.i:219. [value] Done for function mpz_cmp [value] computing for function mpz_init <- main. - Called from PROJECT_FILE.i:209. + Called from PROJECT_FILE.i:219. [value] Done for function mpz_init -PROJECT_FILE.i:210:[value] Assertion got status valid. +PROJECT_FILE.i:220:[value] Assertion got status valid. [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:211. + Called from PROJECT_FILE.i:221. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_mod_ui <- main. - Called from PROJECT_FILE.i:212. + Called from PROJECT_FILE.i:222. [kernel] warning: No code for function mpz_mod_ui, default assigns generated [value] Done for function mpz_mod_ui [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:212. + Called from PROJECT_FILE.i:222. [value] Done for function mpz_init_set_si [value] computing for function mpz_init <- main. - Called from PROJECT_FILE.i:213. + Called from PROJECT_FILE.i:223. [value] Done for function mpz_init [value] computing for function mpz_neg <- main. - Called from PROJECT_FILE.i:213. + Called from PROJECT_FILE.i:223. [value] Done for function mpz_neg [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:214. + Called from PROJECT_FILE.i:224. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:215. + Called from PROJECT_FILE.i:225. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:216. + Called from PROJECT_FILE.i:226. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:216. + Called from PROJECT_FILE.i:226. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:216. + Called from PROJECT_FILE.i:226. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:217. + Called from PROJECT_FILE.i:227. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:217. + Called from PROJECT_FILE.i:227. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:217. + Called from PROJECT_FILE.i:227. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:218. + Called from PROJECT_FILE.i:228. [value] Done for function mpz_clear -PROJECT_FILE.i:221:[value] Assertion got status valid. +PROJECT_FILE.i:231:[value] Assertion got status valid. [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:226. + Called from PROJECT_FILE.i:236. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:226. + Called from PROJECT_FILE.i:236. [value] Done for function mpz_init_set_si [value] computing for function mpz_init <- main. - Called from PROJECT_FILE.i:227. + Called from PROJECT_FILE.i:237. [value] Done for function mpz_init [value] computing for function mpz_mul <- main. - Called from PROJECT_FILE.i:227. + Called from PROJECT_FILE.i:237. [value] Done for function mpz_mul [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:228. + Called from PROJECT_FILE.i:238. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:228. + Called from PROJECT_FILE.i:238. [value] Done for function mpz_init_set_si [value] computing for function mpz_init <- main. - Called from PROJECT_FILE.i:229. + Called from PROJECT_FILE.i:239. [value] Done for function mpz_init [value] computing for function mpz_add <- main. - Called from PROJECT_FILE.i:229. + Called from PROJECT_FILE.i:239. [value] Done for function mpz_add [value] computing for function mpz_init <- main. - Called from PROJECT_FILE.i:230. + Called from PROJECT_FILE.i:240. [value] Done for function mpz_init [value] computing for function mpz_add <- main. - Called from PROJECT_FILE.i:230. + Called from PROJECT_FILE.i:240. [value] Done for function mpz_add [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:231. + Called from PROJECT_FILE.i:241. [value] Done for function mpz_init_set_si [value] computing for function mpz_init <- main. - Called from PROJECT_FILE.i:231. + Called from PROJECT_FILE.i:241. [value] Done for function mpz_init [value] computing for function mpz_sub <- main. - Called from PROJECT_FILE.i:232. + Called from PROJECT_FILE.i:242. [value] Done for function mpz_sub [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:232. + Called from PROJECT_FILE.i:242. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:233. + Called from PROJECT_FILE.i:243. [value] Done for function mpz_init_set_si [value] computing for function mpz_init <- main. - Called from PROJECT_FILE.i:233. + Called from PROJECT_FILE.i:243. [value] Done for function mpz_init [value] computing for function mpz_sub <- main. - Called from PROJECT_FILE.i:234. + Called from PROJECT_FILE.i:244. [value] Done for function mpz_sub [value] computing for function mpz_init <- main. - Called from PROJECT_FILE.i:234. + Called from PROJECT_FILE.i:244. [value] Done for function mpz_init [value] computing for function mpz_add <- main. - Called from PROJECT_FILE.i:235. + Called from PROJECT_FILE.i:245. [value] Done for function mpz_add [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:235. + Called from PROJECT_FILE.i:245. [value] Done for function mpz_init_set_si [value] computing for function mpz_init <- main. - Called from PROJECT_FILE.i:236. + Called from PROJECT_FILE.i:246. [value] Done for function mpz_init [value] computing for function mpz_neg <- main. - Called from PROJECT_FILE.i:236. + Called from PROJECT_FILE.i:246. [value] Done for function mpz_neg [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:237. + Called from PROJECT_FILE.i:247. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:238. + Called from PROJECT_FILE.i:248. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:239. + Called from PROJECT_FILE.i:249. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:239. + Called from PROJECT_FILE.i:249. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:239. + Called from PROJECT_FILE.i:249. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:240. + Called from PROJECT_FILE.i:250. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:240. + Called from PROJECT_FILE.i:250. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:240. + Called from PROJECT_FILE.i:250. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:241. + Called from PROJECT_FILE.i:251. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:241. + Called from PROJECT_FILE.i:251. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:241. + Called from PROJECT_FILE.i:251. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:242. + Called from PROJECT_FILE.i:252. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:242. + Called from PROJECT_FILE.i:252. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:242. + Called from PROJECT_FILE.i:252. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:243. + Called from PROJECT_FILE.i:253. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:243. + Called from PROJECT_FILE.i:253. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:243. + Called from PROJECT_FILE.i:253. [value] Done for function mpz_clear -PROJECT_FILE.i:246:[value] Assertion got status valid. +PROJECT_FILE.i:256:[value] Assertion got status valid. [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:248. + Called from PROJECT_FILE.i:258. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:249. + Called from PROJECT_FILE.i:259. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:249. + Called from PROJECT_FILE.i:259. [value] Done for function mpz_cmp [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:250. + Called from PROJECT_FILE.i:260. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:250. + Called from PROJECT_FILE.i:260. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:251. + Called from PROJECT_FILE.i:261. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:253. + Called from PROJECT_FILE.i:263. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:254. + Called from PROJECT_FILE.i:264. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:254. + Called from PROJECT_FILE.i:264. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:254. + Called from PROJECT_FILE.i:264. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:255. + Called from PROJECT_FILE.i:265. [value] Done for function mpz_clear -PROJECT_FILE.i:258:[value] Assertion got status valid. +PROJECT_FILE.i:268:[value] Assertion got status valid. [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:261. + Called from PROJECT_FILE.i:271. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:261. + Called from PROJECT_FILE.i:271. [value] Done for function mpz_init_set_si [value] computing for function mpz_init <- main. - Called from PROJECT_FILE.i:262. + Called from PROJECT_FILE.i:272. [value] Done for function mpz_init [value] computing for function mpz_neg <- main. - Called from PROJECT_FILE.i:262. + Called from PROJECT_FILE.i:272. [value] Done for function mpz_neg [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:263. + Called from PROJECT_FILE.i:273. [value] Done for function mpz_cmp [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:263. + Called from PROJECT_FILE.i:273. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:274. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:274. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:266. + Called from PROJECT_FILE.i:276. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:267. + Called from PROJECT_FILE.i:277. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:267. + Called from PROJECT_FILE.i:277. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:267. + Called from PROJECT_FILE.i:277. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:268. + Called from PROJECT_FILE.i:278. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:268. + Called from PROJECT_FILE.i:278. [value] Done for function mpz_clear -PROJECT_FILE.i:271:[value] Assertion got status valid. +PROJECT_FILE.i:281:[value] Assertion got status valid. [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:274. + Called from PROJECT_FILE.i:284. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:274. + Called from PROJECT_FILE.i:284. [value] Done for function mpz_init_set_si [value] computing for function mpz_init <- main. - Called from PROJECT_FILE.i:275. + Called from PROJECT_FILE.i:285. [value] Done for function mpz_init [value] computing for function mpz_neg <- main. - Called from PROJECT_FILE.i:275. + Called from PROJECT_FILE.i:285. [value] Done for function mpz_neg [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:276. + Called from PROJECT_FILE.i:286. [value] Done for function mpz_cmp [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:276. + Called from PROJECT_FILE.i:286. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:277. + Called from PROJECT_FILE.i:287. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:277. + Called from PROJECT_FILE.i:287. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:279. + Called from PROJECT_FILE.i:289. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:280. + Called from PROJECT_FILE.i:290. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:280. + Called from PROJECT_FILE.i:290. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:280. + Called from PROJECT_FILE.i:290. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:281. + Called from PROJECT_FILE.i:291. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:281. + Called from PROJECT_FILE.i:291. [value] Done for function mpz_clear -PROJECT_FILE.i:284:[value] Assertion got status valid. +PROJECT_FILE.i:294:[value] Assertion got status valid. [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:286. + Called from PROJECT_FILE.i:296. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:287. + Called from PROJECT_FILE.i:297. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:287. + Called from PROJECT_FILE.i:297. [value] Done for function mpz_cmp [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:288. + Called from PROJECT_FILE.i:298. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:288. + Called from PROJECT_FILE.i:298. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:289. + Called from PROJECT_FILE.i:299. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:291. + Called from PROJECT_FILE.i:301. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:292. + Called from PROJECT_FILE.i:302. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:292. + Called from PROJECT_FILE.i:302. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:292. + Called from PROJECT_FILE.i:302. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:293. + Called from PROJECT_FILE.i:303. [value] Done for function mpz_clear [value] Recording results for main [value] done for function main @@ -752,10 +752,10 @@ PROJECT_FILE.i:284:[value] Assertion got status valid. [from] Computing for function e_acsl_fail [from] Computing for function printf <-e_acsl_fail [from] Done for function printf -PROJECT_FILE.i:115:[from] warning: variadic call detected. Using only 1 argument(s). +PROJECT_FILE.i:125:[from] warning: variadic call detected. Using only 1 argument(s). [from] Computing for function exit <-e_acsl_fail [from] Done for function exit -PROJECT_FILE.i:115:[from] Non terminating function (no dependencies) +PROJECT_FILE.i:125:[from] Non terminating function (no dependencies) [from] Done for function e_acsl_fail [from] Computing for function mpz_clear [from] Done for function mpz_clear diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/array.err.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/array.err.oracle new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/array.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/array.res.oracle new file mode 100644 index 00000000000..6e684c5bb0e --- /dev/null +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/array.res.oracle @@ -0,0 +1,192 @@ +:0:[e-acsl] warning: missing guard for ensuring that 0 is a valid array index +:0:[e-acsl] warning: missing guard for ensuring that 1 is a valid array index +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value] Values of globals at initialization + T1[0..2] ∈ {0} + T2[0..3] ∈ {0} +PROJECT_FILE.i:132:[value] entering loop for the first time +PROJECT_FILE.i:132:[value] assigning non deterministic value for the first time +PROJECT_FILE.i:135:[value] entering loop for the first time +PROJECT_FILE.i:138:[value] Assertion got status unknown. +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:140. +PROJECT_FILE.i:29:[value] Function mpz_init_set_si: postcondition got status unknown +[value] Done for function mpz_init_set_si +[value] computing for function mpz_get_si <- main. + Called from PROJECT_FILE.i:140. +PROJECT_FILE.i:92:[value] Function mpz_get_si: precondition got status valid +[value] Done for function mpz_get_si +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:141. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_get_si <- main. + Called from PROJECT_FILE.i:141. +[value] Done for function mpz_get_si +PROJECT_FILE.i:142:[kernel] warning: accessing out of bounds index [-2147483648..2147483647]. + assert 0 ≤ (int)e_acsl_2 ∧ (int)e_acsl_2 < 3; +PROJECT_FILE.i:142:[kernel] warning: accessing out of bounds index [-2147483648..2147483647]. + assert 0 ≤ (int)e_acsl_4 ∧ (int)e_acsl_4 < 4; +[value] computing for function e_acsl_fail <- main. + Called from PROJECT_FILE.i:143. +[value] computing for function printf <- e_acsl_fail <- main. + Called from PROJECT_FILE.i:125. +[value] Done for function printf +[value] computing for function exit <- e_acsl_fail <- main. + Called from PROJECT_FILE.i:125. +PROJECT_FILE.i:115:[value] Function exit: postcondition got status invalid +[value] Done for function exit +[value] Recording results for e_acsl_fail +[value] Done for function e_acsl_fail +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:144. +PROJECT_FILE.i:39:[value] Function mpz_clear: precondition got status valid +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:144. +[value] Done for function mpz_clear +PROJECT_FILE.i:147:[value] Assertion got status unknown. +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:149. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_get_si <- main. + Called from PROJECT_FILE.i:149. +[value] Done for function mpz_get_si +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:150. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_get_si <- main. + Called from PROJECT_FILE.i:150. +[value] Done for function mpz_get_si +PROJECT_FILE.i:151:[kernel] warning: accessing out of bounds index [-2147483648..2147483647]. + assert 0 ≤ (int)e_acsl_6 ∧ (int)e_acsl_6 < 3; +PROJECT_FILE.i:151:[kernel] warning: accessing out of bounds index [-2147483648..2147483647]. + assert 0 ≤ (int)e_acsl_8 ∧ (int)e_acsl_8 < 4; +[value] computing for function e_acsl_fail <- main. + Called from PROJECT_FILE.i:152. +[value] computing for function printf <- e_acsl_fail <- main. + Called from PROJECT_FILE.i:125. +[value] Done for function printf +[value] computing for function exit <- e_acsl_fail <- main. + Called from PROJECT_FILE.i:125. +[value] Done for function exit +[value] Recording results for e_acsl_fail +[value] Done for function e_acsl_fail +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:153. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:153. +[value] Done for function mpz_clear +[value] Recording results for main +[value] done for function main +[from] Computing for function mpz_init_set_si +[from] Done for function mpz_init_set_si +[from] Computing for function mpz_get_si +[from] Done for function mpz_get_si +[from] Computing for function e_acsl_fail +[from] Computing for function printf <-e_acsl_fail +[from] Done for function printf +PROJECT_FILE.i:125:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Computing for function exit <-e_acsl_fail +[from] Done for function exit +PROJECT_FILE.i:125:[from] Non terminating function (no dependencies) +[from] Done for function e_acsl_fail +[from] Computing for function mpz_clear +[from] Done for function mpz_clear +[value] ====== VALUES COMPUTED ====== +[value] Values for function e_acsl_fail: + NON TERMINATING FUNCTION +[value] Values for function main: + T1[0] ∈ {0; 2} + [1..2] ∈ {0; 1; 2} + T2[0] ∈ {0; 2} + [1..3] ∈ {0; 2; 4; 6} + __retres ∈ {0} +/* Generated by Frama-C */ +struct __anonstruct___mpz_struct_1 { + int _mp_alloc ; + int _mp_size ; + unsigned long *_mp_d ; +}; +typedef struct __anonstruct___mpz_struct_1 __mpz_struct; +typedef __mpz_struct mpz_t[1]; +/*@ ensures \valid(\old(z)); + assigns *z; */ +extern void mpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); +/*@ requires \valid(x); + assigns *x; */ +extern void mpz_clear(__mpz_struct * /*[1]*/ x); +/*@ requires \valid(z); + assigns \nothing; */ +extern long mpz_get_si(__mpz_struct const * /*[1]*/ z); +/*@ terminates \false; + ensures \false; + assigns \nothing; */ +extern void exit(int status); +/*@ assigns \nothing; */ +extern int printf(char const * , ...); +void e_acsl_fail(char *msg) +{ + printf("%s\n",msg); + exit(1); + return; +} + +int T1[3]; +int T2[4]; +int main(void) +{ + int __retres; + { int i; i = 0; while (1) { if (! (i < 3)) { break; } T1[i] = i; i ++; } } + + { int i_0; i_0 = 0; + while (1) { if (! (i_0 < 4)) { break; } T2[i_0] = 2 * i_0; i_0 ++; } + } + + /*@ assert T1[0] ≡ T2[0]; */ ; + { mpz_t e_acsl_1; long e_acsl_2; mpz_t e_acsl_3; long e_acsl_4; + mpz_init_set_si((__mpz_struct *)(e_acsl_1),(long)0); + e_acsl_2 = mpz_get_si((__mpz_struct const *)(e_acsl_1)); + mpz_init_set_si((__mpz_struct *)(e_acsl_3),(long)0); + e_acsl_4 = mpz_get_si((__mpz_struct const *)(e_acsl_3)); + /*@ assert 0 ≤ (int)e_acsl_2 ∧ (int)e_acsl_2 < 3; + // synthesized + + */ + /*@ assert 0 ≤ (int)e_acsl_4 ∧ (int)e_acsl_4 < 4; + // synthesized + + */ + if (! (T1[(int)e_acsl_2] == T2[(int)e_acsl_4])) { + e_acsl_fail((char *)"(T1[0] == T2[0])"); + } mpz_clear((__mpz_struct *)(e_acsl_1)); + mpz_clear((__mpz_struct *)(e_acsl_3)); + } + + /*@ assert T1[1] ≢ T2[1]; */ ; + { mpz_t e_acsl_5; long e_acsl_6; mpz_t e_acsl_7; long e_acsl_8; + mpz_init_set_si((__mpz_struct *)(e_acsl_5),(long)1); + e_acsl_6 = mpz_get_si((__mpz_struct const *)(e_acsl_5)); + mpz_init_set_si((__mpz_struct *)(e_acsl_7),(long)1); + e_acsl_8 = mpz_get_si((__mpz_struct const *)(e_acsl_7)); + /*@ assert 0 ≤ (int)e_acsl_6 ∧ (int)e_acsl_6 < 3; + // synthesized + + */ + /*@ assert 0 ≤ (int)e_acsl_8 ∧ (int)e_acsl_8 < 4; + // synthesized + + */ + if (! (T1[(int)e_acsl_6] != T2[(int)e_acsl_8])) { + e_acsl_fail((char *)"(T1[1] != T2[1])"); + } mpz_clear((__mpz_struct *)(e_acsl_5)); + mpz_clear((__mpz_struct *)(e_acsl_7)); + } + + __retres = 0; + return (__retres); +} + + diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/cast.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/cast.res.oracle index 3528b36ac7d..21e68e75834 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/cast.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/cast.res.oracle @@ -2,16 +2,98 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:124:[value] Assertion got status valid. -PROJECT_FILE.i:127:[value] Assertion got status valid. +PROJECT_FILE.i:134:[value] Assertion got status valid. +PROJECT_FILE.i:137:[value] Assertion got status valid. +PROJECT_FILE.i:140:[value] Assertion got status valid. +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:141. +PROJECT_FILE.i:29:[value] Function mpz_init_set_si: postcondition got status unknown +[value] Done for function mpz_init_set_si +[value] computing for function mpz_get_si <- main. + Called from PROJECT_FILE.i:142. +PROJECT_FILE.i:92:[value] Function mpz_get_si: precondition got status valid +[value] Done for function mpz_get_si +[value] computing for function e_acsl_fail <- main. + Called from PROJECT_FILE.i:143. +[value] computing for function printf <- e_acsl_fail <- main. + Called from PROJECT_FILE.i:125. +[value] Done for function printf +[value] computing for function exit <- e_acsl_fail <- main. + Called from PROJECT_FILE.i:125. +PROJECT_FILE.i:115:[value] Function exit: postcondition got status invalid +[value] Done for function exit +[value] Recording results for e_acsl_fail +[value] Done for function e_acsl_fail +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:144. +PROJECT_FILE.i:39:[value] Function mpz_clear: precondition got status valid +[value] Done for function mpz_clear +PROJECT_FILE.i:147:[value] Assertion got status valid. +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:148. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_get_ui <- main. + Called from PROJECT_FILE.i:149. +PROJECT_FILE.i:96:[value] Function mpz_get_ui: precondition got status valid +[value] Done for function mpz_get_ui +[value] computing for function e_acsl_fail <- main. + Called from PROJECT_FILE.i:151. +[value] computing for function printf <- e_acsl_fail <- main. + Called from PROJECT_FILE.i:125. +[value] Done for function printf +[value] computing for function exit <- e_acsl_fail <- main. + Called from PROJECT_FILE.i:125. +[value] Done for function exit +[value] Recording results for e_acsl_fail +[value] Done for function e_acsl_fail +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:152. +[value] Done for function mpz_clear [value] Recording results for main [value] done for function main +[from] Computing for function mpz_init_set_si +[from] Done for function mpz_init_set_si +[from] Computing for function mpz_get_si +[from] Done for function mpz_get_si +[from] Computing for function e_acsl_fail +[from] Computing for function printf <-e_acsl_fail +[from] Done for function printf +PROJECT_FILE.i:125:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Computing for function exit <-e_acsl_fail +[from] Done for function exit +PROJECT_FILE.i:125:[from] Non terminating function (no dependencies) +[from] Done for function e_acsl_fail +[from] Computing for function mpz_clear +[from] Done for function mpz_clear +[from] Computing for function mpz_get_ui +[from] Done for function mpz_get_ui [value] ====== VALUES COMPUTED ====== +[value] Values for function e_acsl_fail: + NON TERMINATING FUNCTION [value] Values for function main: __retres ∈ {0} x ∈ {0} y ∈ {0} /* Generated by Frama-C */ +struct __anonstruct___mpz_struct_1 { + int _mp_alloc ; + int _mp_size ; + unsigned long *_mp_d ; +}; +typedef struct __anonstruct___mpz_struct_1 __mpz_struct; +typedef __mpz_struct mpz_t[1]; +/*@ ensures \valid(\old(z)); + assigns *z; */ +extern void mpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); +/*@ requires \valid(x); + assigns *x; */ +extern void mpz_clear(__mpz_struct * /*[1]*/ x); +/*@ requires \valid(z); + assigns \nothing; */ +extern long mpz_get_si(__mpz_struct const * /*[1]*/ z); +/*@ requires \valid(z); + assigns \nothing; */ +extern unsigned long mpz_get_ui(__mpz_struct const * /*[1]*/ z); /*@ terminates \false; ensures \false; assigns \nothing; */ @@ -36,6 +118,23 @@ int main(void) if (! ((int)x == y)) { e_acsl_fail((char *)"((int)x == y)"); } /*@ assert x ≡ (long)y; */ ; if (! (x == (long)y)) { e_acsl_fail((char *)"(x == (long)y)"); } + /*@ assert y ≡ (int)0; */ ; + { mpz_t e_acsl_1; long e_acsl_2; + mpz_init_set_si((__mpz_struct *)(e_acsl_1),(long)0); + e_acsl_2 = mpz_get_si((__mpz_struct const *)(e_acsl_1)); + if (! (y == (int)e_acsl_2)) { e_acsl_fail((char *)"(y == (int)0)"); } + mpz_clear((__mpz_struct *)(e_acsl_1)); + } + + /*@ assert (unsigned int)y ≡ (unsigned int)0; */ ; + { mpz_t e_acsl_3; unsigned long e_acsl_4; + mpz_init_set_si((__mpz_struct *)(e_acsl_3),(long)0); + e_acsl_4 = mpz_get_ui((__mpz_struct const *)(e_acsl_3)); + if (! ((unsigned int)y == (unsigned int)e_acsl_4)) { + e_acsl_fail((char *)"((unsigned int)y == (unsigned int)0)"); + } mpz_clear((__mpz_struct *)(e_acsl_3)); + } + __retres = 0; return (__retres); } diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/comparison.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/comparison.res.oracle index c9ad92ac929..4f2e719de1f 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/comparison.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/comparison.res.oracle @@ -2,222 +2,222 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:125:[value] Assertion got status valid. -PROJECT_FILE.i:128:[value] Assertion got status valid. -PROJECT_FILE.i:131:[value] Assertion got status valid. +PROJECT_FILE.i:135:[value] Assertion got status valid. +PROJECT_FILE.i:138:[value] Assertion got status valid. +PROJECT_FILE.i:141:[value] Assertion got status valid. [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:133. + Called from PROJECT_FILE.i:143. PROJECT_FILE.i:29:[value] Function mpz_init_set_si: postcondition got status unknown [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:133. + Called from PROJECT_FILE.i:143. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:134. + Called from PROJECT_FILE.i:144. PROJECT_FILE.i:45:[value] Function mpz_cmp: precondition got status valid PROJECT_FILE.i:46:[value] Function mpz_cmp: precondition got status valid [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:135. + Called from PROJECT_FILE.i:145. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. -PROJECT_FILE.i:105:[value] Function exit: postcondition got status invalid + Called from PROJECT_FILE.i:125. +PROJECT_FILE.i:115:[value] Function exit: postcondition got status invalid [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:136. + Called from PROJECT_FILE.i:146. PROJECT_FILE.i:39:[value] Function mpz_clear: precondition got status valid [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:136. + Called from PROJECT_FILE.i:146. [value] Done for function mpz_clear -PROJECT_FILE.i:139:[value] Assertion got status valid. +PROJECT_FILE.i:149:[value] Assertion got status valid. [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:141. + Called from PROJECT_FILE.i:151. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:141. + Called from PROJECT_FILE.i:151. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:142. + Called from PROJECT_FILE.i:152. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:143. + Called from PROJECT_FILE.i:153. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:144. + Called from PROJECT_FILE.i:154. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:144. + Called from PROJECT_FILE.i:154. [value] Done for function mpz_clear -PROJECT_FILE.i:148:[value] Assertion got status valid. -PROJECT_FILE.i:151:[value] Assertion got status valid. -PROJECT_FILE.i:154:[value] Assertion got status valid. +PROJECT_FILE.i:158:[value] Assertion got status valid. +PROJECT_FILE.i:161:[value] Assertion got status valid. +PROJECT_FILE.i:164:[value] Assertion got status valid. [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:156. + Called from PROJECT_FILE.i:166. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:156. + Called from PROJECT_FILE.i:166. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:157. + Called from PROJECT_FILE.i:167. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:158. + Called from PROJECT_FILE.i:168. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:158. + Called from PROJECT_FILE.i:168. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:159. + Called from PROJECT_FILE.i:169. [value] Done for function mpz_clear -PROJECT_FILE.i:162:[value] Assertion got status valid. +PROJECT_FILE.i:172:[value] Assertion got status valid. [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:164. + Called from PROJECT_FILE.i:174. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:164. + Called from PROJECT_FILE.i:174. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:165. + Called from PROJECT_FILE.i:175. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:166. + Called from PROJECT_FILE.i:176. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:166. + Called from PROJECT_FILE.i:176. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:167. + Called from PROJECT_FILE.i:177. [value] Done for function mpz_clear -PROJECT_FILE.i:170:[value] Assertion got status valid. +PROJECT_FILE.i:180:[value] Assertion got status valid. [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:172. + Called from PROJECT_FILE.i:182. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:172. + Called from PROJECT_FILE.i:182. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:173. + Called from PROJECT_FILE.i:183. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:174. + Called from PROJECT_FILE.i:184. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:175. + Called from PROJECT_FILE.i:185. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:175. + Called from PROJECT_FILE.i:185. [value] Done for function mpz_clear -PROJECT_FILE.i:178:[value] Assertion got status valid. +PROJECT_FILE.i:188:[value] Assertion got status valid. [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:180. + Called from PROJECT_FILE.i:190. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:180. + Called from PROJECT_FILE.i:190. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:181. + Called from PROJECT_FILE.i:191. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:182. + Called from PROJECT_FILE.i:192. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:183. + Called from PROJECT_FILE.i:193. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:183. + Called from PROJECT_FILE.i:193. [value] Done for function mpz_clear -PROJECT_FILE.i:186:[value] Assertion got status valid. +PROJECT_FILE.i:196:[value] Assertion got status valid. [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:188. + Called from PROJECT_FILE.i:198. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:188. + Called from PROJECT_FILE.i:198. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:189. + Called from PROJECT_FILE.i:199. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:190. + Called from PROJECT_FILE.i:200. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:191. + Called from PROJECT_FILE.i:201. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:191. + Called from PROJECT_FILE.i:201. [value] Done for function mpz_clear -PROJECT_FILE.i:194:[value] Assertion got status valid. +PROJECT_FILE.i:204:[value] Assertion got status valid. [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:196. + Called from PROJECT_FILE.i:206. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:196. + Called from PROJECT_FILE.i:206. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:197. + Called from PROJECT_FILE.i:207. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:198. + Called from PROJECT_FILE.i:208. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:199. + Called from PROJECT_FILE.i:209. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:199. + Called from PROJECT_FILE.i:209. [value] Done for function mpz_clear [value] Recording results for main [value] done for function main @@ -228,10 +228,10 @@ PROJECT_FILE.i:194:[value] Assertion got status valid. [from] Computing for function e_acsl_fail [from] Computing for function printf <-e_acsl_fail [from] Done for function printf -PROJECT_FILE.i:115:[from] warning: variadic call detected. Using only 1 argument(s). +PROJECT_FILE.i:125:[from] warning: variadic call detected. Using only 1 argument(s). [from] Computing for function exit <-e_acsl_fail [from] Done for function exit -PROJECT_FILE.i:115:[from] Non terminating function (no dependencies) +PROJECT_FILE.i:125:[from] Non terminating function (no dependencies) [from] Done for function e_acsl_fail [from] Computing for function mpz_clear [from] Done for function mpz_clear diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/function_contract.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/function_contract.res.oracle index 40015e5569c..a1bf328b270 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/function_contract.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/function_contract.res.oracle @@ -5,380 +5,380 @@ X ∈ {0} Y ∈ {2} [value] computing for function f <- main. - Called from PROJECT_FILE.i:336. -PROJECT_FILE.i:119:[value] Function f: postcondition got status valid + Called from PROJECT_FILE.i:346. +PROJECT_FILE.i:129:[value] Function f: postcondition got status valid [value] Recording results for f [value] Done for function f [value] computing for function g <- main. - Called from PROJECT_FILE.i:337. -PROJECT_FILE.i:133:[value] Function g: postcondition got status valid -PROJECT_FILE.i:134:[value] Function g: postcondition got status valid + Called from PROJECT_FILE.i:347. +PROJECT_FILE.i:143:[value] Function g: postcondition got status valid +PROJECT_FILE.i:144:[value] Function g: postcondition got status valid [value] Recording results for g [value] Done for function g [value] computing for function h <- main. - Called from PROJECT_FILE.i:338. -PROJECT_FILE.i:152:[value] Function h: precondition got status valid + Called from PROJECT_FILE.i:348. +PROJECT_FILE.i:162:[value] Function h: precondition got status valid [value] computing for function mpz_init_set_si <- h <- main. - Called from PROJECT_FILE.i:156. + Called from PROJECT_FILE.i:166. PROJECT_FILE.i:29:[value] Function mpz_init_set_si: postcondition got status unknown [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- h <- main. - Called from PROJECT_FILE.i:156. + Called from PROJECT_FILE.i:166. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- h <- main. - Called from PROJECT_FILE.i:157. + Called from PROJECT_FILE.i:167. PROJECT_FILE.i:45:[value] Function mpz_cmp: precondition got status valid PROJECT_FILE.i:46:[value] Function mpz_cmp: precondition got status valid [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- h <- main. - Called from PROJECT_FILE.i:158. + Called from PROJECT_FILE.i:168. [value] computing for function printf <- e_acsl_fail <- h <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- h <- main. - Called from PROJECT_FILE.i:115. -PROJECT_FILE.i:105:[value] Function exit: postcondition got status invalid + Called from PROJECT_FILE.i:125. +PROJECT_FILE.i:115:[value] Function exit: postcondition got status invalid [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- h <- main. - Called from PROJECT_FILE.i:159. + Called from PROJECT_FILE.i:169. PROJECT_FILE.i:39:[value] Function mpz_clear: precondition got status valid [value] Done for function mpz_clear [value] computing for function mpz_clear <- h <- main. - Called from PROJECT_FILE.i:159. + Called from PROJECT_FILE.i:169. [value] Done for function mpz_clear [value] Recording results for h [value] Done for function h [value] computing for function i <- main. - Called from PROJECT_FILE.i:339. -PROJECT_FILE.i:166:[value] Function i: precondition got status valid -PROJECT_FILE.i:167:[value] Function i: precondition got status valid + Called from PROJECT_FILE.i:349. +PROJECT_FILE.i:176:[value] Function i: precondition got status valid +PROJECT_FILE.i:177:[value] Function i: precondition got status valid [value] computing for function mpz_init_set_si <- i <- main. - Called from PROJECT_FILE.i:171. + Called from PROJECT_FILE.i:181. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- i <- main. - Called from PROJECT_FILE.i:172. + Called from PROJECT_FILE.i:182. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- i <- main. - Called from PROJECT_FILE.i:172. + Called from PROJECT_FILE.i:182. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- i <- main. - Called from PROJECT_FILE.i:173. + Called from PROJECT_FILE.i:183. [value] computing for function printf <- e_acsl_fail <- i <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- i <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_init_set_si <- i <- main. - Called from PROJECT_FILE.i:174. + Called from PROJECT_FILE.i:184. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- i <- main. - Called from PROJECT_FILE.i:174. + Called from PROJECT_FILE.i:184. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- i <- main. - Called from PROJECT_FILE.i:175. + Called from PROJECT_FILE.i:185. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- i <- main. - Called from PROJECT_FILE.i:176. + Called from PROJECT_FILE.i:186. [value] computing for function printf <- e_acsl_fail <- i <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- i <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- i <- main. - Called from PROJECT_FILE.i:177. + Called from PROJECT_FILE.i:187. [value] Done for function mpz_clear [value] computing for function mpz_clear <- i <- main. - Called from PROJECT_FILE.i:177. + Called from PROJECT_FILE.i:187. [value] Done for function mpz_clear [value] computing for function mpz_clear <- i <- main. - Called from PROJECT_FILE.i:177. + Called from PROJECT_FILE.i:187. [value] Done for function mpz_clear [value] computing for function mpz_clear <- i <- main. - Called from PROJECT_FILE.i:178. + Called from PROJECT_FILE.i:188. [value] Done for function mpz_clear [value] Recording results for i [value] Done for function i [value] computing for function j <- main. - Called from PROJECT_FILE.i:340. -PROJECT_FILE.i:186:[value] Function j, behavior b1: precondition got status valid -PROJECT_FILE.i:190:[value] Function j, behavior b2: precondition got status valid -PROJECT_FILE.i:191:[value] Function j, behavior b2: precondition got status valid + Called from PROJECT_FILE.i:350. +PROJECT_FILE.i:196:[value] Function j, behavior b1: precondition got status valid +PROJECT_FILE.i:200:[value] Function j, behavior b2: precondition got status valid +PROJECT_FILE.i:201:[value] Function j, behavior b2: precondition got status valid [value] computing for function mpz_init_set_si <- j <- main. - Called from PROJECT_FILE.i:201. + Called from PROJECT_FILE.i:211. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- j <- main. - Called from PROJECT_FILE.i:201. + Called from PROJECT_FILE.i:211. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- j <- main. - Called from PROJECT_FILE.i:202. + Called from PROJECT_FILE.i:212. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- j <- main. - Called from PROJECT_FILE.i:203. + Called from PROJECT_FILE.i:213. [value] computing for function printf <- e_acsl_fail <- j <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- j <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_init_set_si <- j <- main. - Called from PROJECT_FILE.i:204. + Called from PROJECT_FILE.i:214. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- j <- main. - Called from PROJECT_FILE.i:204. + Called from PROJECT_FILE.i:214. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- j <- main. - Called from PROJECT_FILE.i:205. + Called from PROJECT_FILE.i:215. [value] Done for function mpz_init_set_si [value] computing for function mpz_init <- j <- main. - Called from PROJECT_FILE.i:205. + Called from PROJECT_FILE.i:215. PROJECT_FILE.i:21:[value] Function mpz_init: postcondition got status unknown [value] Done for function mpz_init [value] computing for function mpz_add <- j <- main. - Called from PROJECT_FILE.i:206. + Called from PROJECT_FILE.i:216. PROJECT_FILE.i:60:[value] Function mpz_add: precondition got status valid PROJECT_FILE.i:61:[value] Function mpz_add: precondition got status valid PROJECT_FILE.i:62:[value] Function mpz_add: precondition got status valid [value] Done for function mpz_add [value] computing for function mpz_cmp <- j <- main. - Called from PROJECT_FILE.i:207. + Called from PROJECT_FILE.i:217. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- j <- main. - Called from PROJECT_FILE.i:208. + Called from PROJECT_FILE.i:218. [value] computing for function printf <- e_acsl_fail <- j <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- j <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_init_set_si <- j <- main. - Called from PROJECT_FILE.i:209. + Called from PROJECT_FILE.i:219. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- j <- main. - Called from PROJECT_FILE.i:209. + Called from PROJECT_FILE.i:219. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- j <- main. - Called from PROJECT_FILE.i:210. + Called from PROJECT_FILE.i:220. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- j <- main. - Called from PROJECT_FILE.i:211. + Called from PROJECT_FILE.i:221. [value] computing for function printf <- e_acsl_fail <- j <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- j <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- j <- main. - Called from PROJECT_FILE.i:212. + Called from PROJECT_FILE.i:222. [value] Done for function mpz_clear [value] computing for function mpz_clear <- j <- main. - Called from PROJECT_FILE.i:212. + Called from PROJECT_FILE.i:222. [value] Done for function mpz_clear [value] computing for function mpz_clear <- j <- main. - Called from PROJECT_FILE.i:212. + Called from PROJECT_FILE.i:222. [value] Done for function mpz_clear [value] computing for function mpz_clear <- j <- main. - Called from PROJECT_FILE.i:213. + Called from PROJECT_FILE.i:223. [value] Done for function mpz_clear [value] computing for function mpz_clear <- j <- main. - Called from PROJECT_FILE.i:213. + Called from PROJECT_FILE.i:223. [value] Done for function mpz_clear [value] computing for function mpz_clear <- j <- main. - Called from PROJECT_FILE.i:213. + Called from PROJECT_FILE.i:223. [value] Done for function mpz_clear [value] computing for function mpz_clear <- j <- main. - Called from PROJECT_FILE.i:214. + Called from PROJECT_FILE.i:224. [value] Done for function mpz_clear [value] computing for function mpz_clear <- j <- main. - Called from PROJECT_FILE.i:214. + Called from PROJECT_FILE.i:224. [value] Done for function mpz_clear -PROJECT_FILE.i:187:[value] Function j, behavior b1: postcondition got status valid -PROJECT_FILE.i:192:[value] Function j, behavior b2: postcondition got status valid +PROJECT_FILE.i:197:[value] Function j, behavior b1: postcondition got status valid +PROJECT_FILE.i:202:[value] Function j, behavior b2: postcondition got status valid [value] Recording results for j [value] Done for function j [value] computing for function k <- main. - Called from PROJECT_FILE.i:341. -PROJECT_FILE.i:237:[value] Function k, behavior b1: assumption got status invalid; precondition not evaluated -PROJECT_FILE.i:242:[value] Function k, behavior b2: precondition got status valid -PROJECT_FILE.i:243:[value] Function k, behavior b2: precondition got status valid + Called from PROJECT_FILE.i:351. +PROJECT_FILE.i:247:[value] Function k, behavior b1: assumption got status invalid; precondition not evaluated +PROJECT_FILE.i:252:[value] Function k, behavior b2: precondition got status valid +PROJECT_FILE.i:253:[value] Function k, behavior b2: precondition got status valid [value] computing for function mpz_init_set_si <- k <- main. - Called from PROJECT_FILE.i:256. + Called from PROJECT_FILE.i:266. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- k <- main. - Called from PROJECT_FILE.i:257. + Called from PROJECT_FILE.i:267. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- k <- main. - Called from PROJECT_FILE.i:257. + Called from PROJECT_FILE.i:267. [value] Done for function mpz_cmp [value] computing for function mpz_init_set_si <- k <- main. - Called from PROJECT_FILE.i:263. + Called from PROJECT_FILE.i:273. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- k <- main. - Called from PROJECT_FILE.i:264. + Called from PROJECT_FILE.i:274. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- k <- main. - Called from PROJECT_FILE.i:265. + Called from PROJECT_FILE.i:275. [value] Done for function mpz_cmp -PROJECT_FILE.i:266:[value] assigning non deterministic value for the first time +PROJECT_FILE.i:276:[value] assigning non deterministic value for the first time [value] computing for function mpz_clear <- k <- main. - Called from PROJECT_FILE.i:267. + Called from PROJECT_FILE.i:277. [value] Done for function mpz_clear [value] computing for function mpz_clear <- k <- main. - Called from PROJECT_FILE.i:268. + Called from PROJECT_FILE.i:278. [value] Done for function mpz_clear [value] computing for function e_acsl_fail <- k <- main. - Called from PROJECT_FILE.i:269. + Called from PROJECT_FILE.i:279. [value] computing for function printf <- e_acsl_fail <- k <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- k <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_init_set_si <- k <- main. - Called from PROJECT_FILE.i:270. + Called from PROJECT_FILE.i:280. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- k <- main. - Called from PROJECT_FILE.i:270. + Called from PROJECT_FILE.i:280. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- k <- main. - Called from PROJECT_FILE.i:271. + Called from PROJECT_FILE.i:281. [value] Done for function mpz_cmp [value] computing for function mpz_init_set_si <- k <- main. - Called from PROJECT_FILE.i:276. + Called from PROJECT_FILE.i:286. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- k <- main. - Called from PROJECT_FILE.i:277. + Called from PROJECT_FILE.i:287. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- k <- main. - Called from PROJECT_FILE.i:278. + Called from PROJECT_FILE.i:288. [value] Done for function mpz_cmp [value] computing for function mpz_clear <- k <- main. - Called from PROJECT_FILE.i:280. + Called from PROJECT_FILE.i:290. [value] Done for function mpz_clear [value] computing for function mpz_clear <- k <- main. - Called from PROJECT_FILE.i:281. + Called from PROJECT_FILE.i:291. [value] Done for function mpz_clear [value] computing for function mpz_init_set_si <- k <- main. - Called from PROJECT_FILE.i:287. + Called from PROJECT_FILE.i:297. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- k <- main. - Called from PROJECT_FILE.i:288. + Called from PROJECT_FILE.i:298. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- k <- main. - Called from PROJECT_FILE.i:289. + Called from PROJECT_FILE.i:299. [value] Done for function mpz_cmp [value] computing for function mpz_clear <- k <- main. - Called from PROJECT_FILE.i:291. + Called from PROJECT_FILE.i:301. [value] Done for function mpz_clear [value] computing for function mpz_clear <- k <- main. - Called from PROJECT_FILE.i:292. + Called from PROJECT_FILE.i:302. [value] Done for function mpz_clear [value] computing for function e_acsl_fail <- k <- main. - Called from PROJECT_FILE.i:293. + Called from PROJECT_FILE.i:303. [value] computing for function printf <- e_acsl_fail <- k <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- k <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_init_set_si <- k <- main. - Called from PROJECT_FILE.i:294. + Called from PROJECT_FILE.i:304. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- k <- main. - Called from PROJECT_FILE.i:294. + Called from PROJECT_FILE.i:304. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- k <- main. - Called from PROJECT_FILE.i:295. + Called from PROJECT_FILE.i:305. [value] Done for function mpz_cmp [value] computing for function mpz_init_set_si <- k <- main. - Called from PROJECT_FILE.i:300. + Called from PROJECT_FILE.i:310. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- k <- main. - Called from PROJECT_FILE.i:301. + Called from PROJECT_FILE.i:311. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- k <- main. - Called from PROJECT_FILE.i:302. + Called from PROJECT_FILE.i:312. [value] Done for function mpz_cmp [value] computing for function mpz_clear <- k <- main. - Called from PROJECT_FILE.i:304. + Called from PROJECT_FILE.i:314. [value] Done for function mpz_clear [value] computing for function mpz_clear <- k <- main. - Called from PROJECT_FILE.i:305. + Called from PROJECT_FILE.i:315. [value] Done for function mpz_clear [value] computing for function mpz_init_set_si <- k <- main. - Called from PROJECT_FILE.i:313. + Called from PROJECT_FILE.i:323. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- k <- main. - Called from PROJECT_FILE.i:314. + Called from PROJECT_FILE.i:324. [value] Done for function mpz_init_set_si [value] computing for function mpz_init <- k <- main. - Called from PROJECT_FILE.i:315. + Called from PROJECT_FILE.i:325. [value] Done for function mpz_init [value] computing for function mpz_add <- k <- main. - Called from PROJECT_FILE.i:316. + Called from PROJECT_FILE.i:326. [value] Done for function mpz_add [value] computing for function mpz_init_set_si <- k <- main. - Called from PROJECT_FILE.i:317. + Called from PROJECT_FILE.i:327. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- k <- main. - Called from PROJECT_FILE.i:318. + Called from PROJECT_FILE.i:328. [value] Done for function mpz_cmp [value] computing for function mpz_clear <- k <- main. - Called from PROJECT_FILE.i:320. + Called from PROJECT_FILE.i:330. [value] Done for function mpz_clear [value] computing for function mpz_clear <- k <- main. - Called from PROJECT_FILE.i:321. + Called from PROJECT_FILE.i:331. [value] Done for function mpz_clear [value] computing for function mpz_clear <- k <- main. - Called from PROJECT_FILE.i:322. + Called from PROJECT_FILE.i:332. [value] Done for function mpz_clear [value] computing for function mpz_clear <- k <- main. - Called from PROJECT_FILE.i:323. + Called from PROJECT_FILE.i:333. [value] Done for function mpz_clear [value] computing for function e_acsl_fail <- k <- main. - Called from PROJECT_FILE.i:324. + Called from PROJECT_FILE.i:334. [value] computing for function printf <- e_acsl_fail <- k <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- k <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- k <- main. - Called from PROJECT_FILE.i:325. + Called from PROJECT_FILE.i:335. [value] Done for function mpz_clear [value] computing for function mpz_clear <- k <- main. - Called from PROJECT_FILE.i:325. + Called from PROJECT_FILE.i:335. [value] Done for function mpz_clear [value] computing for function mpz_clear <- k <- main. - Called from PROJECT_FILE.i:325. + Called from PROJECT_FILE.i:335. [value] Done for function mpz_clear [value] computing for function mpz_clear <- k <- main. - Called from PROJECT_FILE.i:326. + Called from PROJECT_FILE.i:336. [value] Done for function mpz_clear [value] computing for function mpz_clear <- k <- main. - Called from PROJECT_FILE.i:326. + Called from PROJECT_FILE.i:336. [value] Done for function mpz_clear [value] computing for function mpz_clear <- k <- main. - Called from PROJECT_FILE.i:326. + Called from PROJECT_FILE.i:336. [value] Done for function mpz_clear [value] Recording results for k [value] Done for function k diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_addrOf.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_addrOf.c index 55773197f9b..7361611b9f4 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_addrOf.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_addrOf.c @@ -30,7 +30,7 @@ __inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__(( __pure__)); __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__(( __pure__)); -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__(( +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( __pure__)); __inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z, mp_size_t __gmp_n) __attribute__(( @@ -153,16 +153,18 @@ __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) return (__retres); } -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__(( +/*@ requires \valid(z); + assigns \nothing; */ +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( __pure__)); -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) { mp_ptr __gmp_p; mp_size_t __gmp_n; mp_limb_t __gmp_l; mp_limb_t tmp; - __gmp_p = __gmp_z->_mp_d; - __gmp_n = (long)__gmp_z->_mp_size; + __gmp_p = z->_mp_d; + __gmp_n = (long)z->_mp_size; __gmp_l = *(__gmp_p + 0); if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; } else { tmp = (unsigned long)0; } diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_arith.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_arith.c index b2bed027f32..ec1b8c15538 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_arith.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_arith.c @@ -58,7 +58,7 @@ __inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__(( __pure__)); __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__(( __pure__)); -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__(( +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( __pure__)); __inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z, mp_size_t __gmp_n) __attribute__(( @@ -206,16 +206,18 @@ __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) return (__retres); } -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__(( +/*@ requires \valid(z); + assigns \nothing; */ +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( __pure__)); -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) { mp_ptr __gmp_p; mp_size_t __gmp_n; mp_limb_t __gmp_l; mp_limb_t tmp; - __gmp_p = __gmp_z->_mp_d; - __gmp_n = (long)__gmp_z->_mp_size; + __gmp_p = z->_mp_d; + __gmp_n = (long)z->_mp_size; __gmp_l = *(__gmp_p + 0); if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; } else { tmp = (unsigned long)0; } diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_array.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_array.c new file mode 100644 index 00000000000..9c9e4faecf3 --- /dev/null +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_array.c @@ -0,0 +1,604 @@ +/* Generated by Frama-C */ +typedef unsigned long size_t; +typedef unsigned long mp_limb_t; +struct __anonstruct___mpz_struct_6 { + int _mp_alloc ; + int _mp_size ; + mp_limb_t *_mp_d ; +}; +typedef struct __anonstruct___mpz_struct_6 __mpz_struct; +typedef __mpz_struct mpz_t[1]; +typedef mp_limb_t *mp_ptr; +typedef mp_limb_t const *mp_srcptr; +typedef long mp_size_t; +struct __anonstruct___mpq_struct_7 { + __mpz_struct _mp_num ; + __mpz_struct _mp_den ; +}; +typedef struct __anonstruct___mpq_struct_7 __mpq_struct; +typedef __mpz_struct const *mpz_srcptr; +typedef __mpz_struct *mpz_ptr; +typedef __mpq_struct const *mpq_srcptr; +typedef __mpq_struct *mpq_ptr; +/* compiler builtin: + long __builtin_expect(long, long); */ +/*@ assigns \nothing; */ +extern int printf(char const * __restrict __format , ...); +__inline static void __gmpz_abs(mpz_ptr __gmp_w, mpz_srcptr __gmp_u); +/*@ requires \valid(x); + assigns *x; */ +extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); +__inline static int __gmpz_fits_uint_p(mpz_srcptr __gmp_z) __attribute__(( +__pure__)); +__inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__(( +__pure__)); +__inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__(( +__pure__)); +/*@ requires \valid(z); + assigns \nothing; */ +extern long __gmpz_get_si(__mpz_struct const * /*[1]*/ z) __attribute__(( +__pure__)); +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( +__pure__)); +__inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z, + mp_size_t __gmp_n) __attribute__(( +__pure__)); +/*@ ensures \valid(\old(z)); + assigns *z; */ +extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); +__inline static void __gmpz_neg(__mpz_struct * /*[1]*/ z1, + __mpz_struct const * /*[1]*/ z2); +__inline static int __gmpz_perfect_square_p(mpz_srcptr __gmp_a) __attribute__(( +__pure__)); +__inline static unsigned long __gmpz_popcount(mpz_srcptr __gmp_u) __attribute__(( +__pure__)); +extern void __gmpz_set(mpz_ptr, mpz_srcptr); +__inline static void __gmpz_set_q(mpz_ptr __gmp_w, mpq_srcptr __gmp_u); +__inline static size_t __gmpz_size(mpz_srcptr __gmp_z) __attribute__(( +__pure__)); +extern void __gmpz_tdiv_q(mpz_ptr, mpz_srcptr, mpz_srcptr); +__inline static void __gmpq_abs(mpq_ptr __gmp_w, mpq_srcptr __gmp_u); +__inline static void __gmpq_neg(mpq_ptr __gmp_w, mpq_srcptr __gmp_u); +extern void __gmpq_set(mpq_ptr, mpq_srcptr); +__inline static mp_limb_t __gmpn_add(mp_ptr __gmp_wp, mp_srcptr __gmp_xp, + mp_size_t __gmp_xsize, + mp_srcptr __gmp_yp, + mp_size_t __gmp_ysize); +__inline static mp_limb_t __gmpn_add_1(mp_ptr __gmp_dst, mp_srcptr __gmp_src, + mp_size_t __gmp_size, + mp_limb_t __gmp_n); +extern mp_limb_t __gmpn_add_n(mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); +__inline static int __gmpn_cmp(mp_srcptr __gmp_xp, mp_srcptr __gmp_yp, + mp_size_t __gmp_size) __attribute__((__pure__)); +__inline static mp_limb_t __gmpn_neg_n(mp_ptr __gmp_rp, mp_srcptr __gmp_up, + mp_size_t __gmp_n); +extern int __gmpn_perfect_square_p(mp_srcptr, mp_size_t) __attribute__(( +__pure__)); +extern unsigned long __gmpn_popcount(mp_srcptr, mp_size_t) __attribute__(( +__pure__)); +__inline static mp_limb_t __gmpn_sub(mp_ptr __gmp_wp, mp_srcptr __gmp_xp, + mp_size_t __gmp_xsize, + mp_srcptr __gmp_yp, + mp_size_t __gmp_ysize); +__inline static mp_limb_t __gmpn_sub_1(mp_ptr __gmp_dst, mp_srcptr __gmp_src, + mp_size_t __gmp_size, + mp_limb_t __gmp_n); +extern mp_limb_t __gmpn_sub_n(mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); +__inline static void __gmpz_abs(mpz_ptr __gmp_w, mpz_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) { __gmpz_set(__gmp_w,__gmp_u); } + if (__gmp_w->_mp_size >= 0) { __gmp_w->_mp_size = __gmp_w->_mp_size; } + else { __gmp_w->_mp_size = - __gmp_w->_mp_size; } + return; +} + +__inline static int __gmpz_fits_uint_p(mpz_srcptr __gmp_z) __attribute__(( +__pure__)); +__inline static int __gmpz_fits_uint_p(mpz_srcptr __gmp_z) +{ + int __retres; + mp_size_t __gmp_n; + mp_ptr __gmp_p; + int tmp; + __gmp_n = (long)__gmp_z->_mp_size; + __gmp_p = __gmp_z->_mp_d; + if (__gmp_n == (mp_size_t)0) { tmp = 1; } + else { + if (__gmp_n == (mp_size_t)1) { + if (*(__gmp_p + 0) <= (mp_limb_t)(~ ((unsigned int)0))) { tmp = 1; } + else { tmp = 0; } + } + else { tmp = 0; } + } + __retres = tmp; + goto return_label; + return_label: /* internal */ + return (__retres); +} + +__inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__(( +__pure__)); +__inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) +{ + int __retres; + mp_size_t __gmp_n; + mp_ptr __gmp_p; + int tmp; + __gmp_n = (long)__gmp_z->_mp_size; + __gmp_p = __gmp_z->_mp_d; + if (__gmp_n == (mp_size_t)0) { tmp = 1; } + else { + if (__gmp_n == (mp_size_t)1) { + if (*(__gmp_p + 0) <= ~ ((unsigned long)0)) { tmp = 1; } + else { tmp = 0; } + } + else { tmp = 0; } + } + __retres = tmp; + goto return_label; + return_label: /* internal */ + return (__retres); +} + +__inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__(( +__pure__)); +__inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) +{ + int __retres; + mp_size_t __gmp_n; + mp_ptr __gmp_p; + int tmp; + __gmp_n = (long)__gmp_z->_mp_size; + __gmp_p = __gmp_z->_mp_d; + if (__gmp_n == (mp_size_t)0) { tmp = 1; } + else { + if (__gmp_n == (mp_size_t)1) { + if (*(__gmp_p + 0) <= (mp_limb_t)((unsigned short)(~ 0))) { tmp = 1; } + else { tmp = 0; } + } + else { tmp = 0; } + } + __retres = tmp; + goto return_label; + return_label: /* internal */ + return (__retres); +} + +/*@ requires \valid(z); + assigns \nothing; */ +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( +__pure__)); +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) +{ + mp_ptr __gmp_p; + mp_size_t __gmp_n; + mp_limb_t __gmp_l; + mp_limb_t tmp; + __gmp_p = z->_mp_d; + __gmp_n = (long)z->_mp_size; + __gmp_l = *(__gmp_p + 0); + if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; } + else { tmp = (unsigned long)0; } + return (tmp); +} + +__inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z, + mp_size_t __gmp_n) __attribute__(( +__pure__)); +__inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z, + mp_size_t __gmp_n) +{ + mp_limb_t __gmp_result; + long tmp_1; + int tmp_0; + __gmp_result = (unsigned long)0; + { /*undefined sequence*/ + if (__gmp_n >= (mp_size_t)0) { + int tmp; + { /*undefined sequence*/ + if (__gmp_z->_mp_size >= 0) { tmp = __gmp_z->_mp_size; } + else { tmp = - __gmp_z->_mp_size; } + ; + } + if (__gmp_n < (mp_size_t)tmp) { tmp_0 = 1; } + else { tmp_0 = 0; } + } + else { tmp_0 = 0; } + tmp_1 = __builtin_expect((long)(tmp_0 != 0),(long)1); + } + if (tmp_1) { __gmp_result = *(__gmp_z->_mp_d + __gmp_n); } + return (__gmp_result); +} + +/*@ requires \valid(z1); + requires \valid(z2); + assigns *z1; */ +__inline static void __gmpz_neg(__mpz_struct * /*[1]*/ z1, + __mpz_struct const * /*[1]*/ z2) +{ + if (z1 != z2) { __gmpz_set(z1,z2); } + z1->_mp_size = - z1->_mp_size; + return; +} + +__inline static int __gmpz_perfect_square_p(mpz_srcptr __gmp_a) __attribute__(( +__pure__)); +__inline static int __gmpz_perfect_square_p(mpz_srcptr __gmp_a) +{ + mp_size_t __gmp_asize; + int __gmp_result; + long tmp; + __gmp_asize = (long)__gmp_a->_mp_size; + __gmp_result = __gmp_asize >= (mp_size_t)0; + tmp = __builtin_expect((long)((__gmp_asize > (mp_size_t)0) != 0),(long)1); + if (tmp) { + __gmp_result = __gmpn_perfect_square_p((mp_limb_t const *)__gmp_a->_mp_d, + __gmp_asize); + } + return (__gmp_result); +} + +__inline static unsigned long __gmpz_popcount(mpz_srcptr __gmp_u) __attribute__(( +__pure__)); +__inline static unsigned long __gmpz_popcount(mpz_srcptr __gmp_u) +{ + mp_size_t __gmp_usize; + unsigned long __gmp_result; + long tmp; + __gmp_usize = (long)__gmp_u->_mp_size; + if (__gmp_usize < (mp_size_t)0) { __gmp_result = ~ ((unsigned long)0); } + else { __gmp_result = (unsigned long)0; } + tmp = __builtin_expect((long)((__gmp_usize > (mp_size_t)0) != 0),(long)1); + if (tmp) { + __gmp_result = __gmpn_popcount((mp_limb_t const *)__gmp_u->_mp_d, + __gmp_usize); + } + return (__gmp_result); +} + +__inline static void __gmpz_set_q(mpz_ptr __gmp_w, mpq_srcptr __gmp_u) +{ + __gmpz_tdiv_q(__gmp_w,& __gmp_u->_mp_num,& __gmp_u->_mp_den); + return; +} + +__inline static size_t __gmpz_size(mpz_srcptr __gmp_z) __attribute__(( +__pure__)); +__inline static size_t __gmpz_size(mpz_srcptr __gmp_z) +{ + size_t __retres; + int tmp; + if (__gmp_z->_mp_size >= 0) { tmp = __gmp_z->_mp_size; } + else { tmp = - __gmp_z->_mp_size; } + __retres = (unsigned long)tmp; + return (__retres); +} + +__inline static void __gmpq_abs(mpq_ptr __gmp_w, mpq_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) { __gmpq_set(__gmp_w,__gmp_u); } + if (__gmp_w->_mp_num._mp_size >= 0) { + __gmp_w->_mp_num._mp_size = __gmp_w->_mp_num._mp_size; + } + else { __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size; } + return; +} + +__inline static void __gmpq_neg(mpq_ptr __gmp_w, mpq_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) { __gmpq_set(__gmp_w,__gmp_u); } + __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size; + return; +} + +__inline static mp_limb_t __gmpn_add(mp_ptr __gmp_wp, mp_srcptr __gmp_xp, + mp_size_t __gmp_xsize, + mp_srcptr __gmp_yp, + mp_size_t __gmp_ysize) +{ + mp_limb_t __gmp_c; + while (1) { + { mp_size_t __gmp_i; mp_limb_t __gmp_x; __gmp_i = __gmp_ysize; + if (__gmp_i != (mp_size_t)0) { + mp_limb_t tmp_1; + tmp_1 = __gmpn_add_n(__gmp_wp,__gmp_xp,__gmp_yp,__gmp_i); + if (tmp_1) { + while (1) { + mp_size_t tmp; + mp_limb_t tmp_0; + if (__gmp_i >= __gmp_xsize) { + __gmp_c = (unsigned long)1; + goto __gmp_done; + } + __gmp_x = *(__gmp_xp + __gmp_i); + { /*undefined sequence*/ + tmp = __gmp_i; + __gmp_i += (mp_size_t)1; + tmp_0 = (__gmp_x + (mp_limb_t)1) & (~ ((unsigned long)0) >> 0); + *(__gmp_wp + tmp) = tmp_0; + } + if (! (tmp_0 == (mp_limb_t)0)) { break; } + } + } + } + if (__gmp_wp != __gmp_xp) { + while (1) { + { mp_size_t __gmp_j; __gmp_j = __gmp_i; + while (__gmp_j < __gmp_xsize) { + *(__gmp_wp + __gmp_j) = *(__gmp_xp + __gmp_j); + __gmp_j += (mp_size_t)1; + } + } + + break; + } + } __gmp_c = (unsigned long)0; __gmp_done: ; + } + + break; + } + return (__gmp_c); +} + +__inline static mp_limb_t __gmpn_add_1(mp_ptr __gmp_dst, mp_srcptr __gmp_src, + mp_size_t __gmp_size, + mp_limb_t __gmp_n) +{ + mp_limb_t __gmp_c; + while (1) { + { mp_size_t __gmp_i; mp_limb_t __gmp_x; mp_limb_t __gmp_r; + __gmp_x = *(__gmp_src + 0); __gmp_r = __gmp_x + __gmp_n; + *(__gmp_dst + 0) = __gmp_r; + if (__gmp_r < __gmp_n) { + __gmp_c = (unsigned long)1; + __gmp_i = (long)1; + while (__gmp_i < __gmp_size) { + __gmp_x = *(__gmp_src + __gmp_i); + __gmp_r = __gmp_x + (mp_limb_t)1; + *(__gmp_dst + __gmp_i) = __gmp_r; + __gmp_i += (mp_size_t)1; + if (! (__gmp_r < (mp_limb_t)1)) { + if (__gmp_src != __gmp_dst) { + while (1) { + { mp_size_t __gmp_j; __gmp_j = __gmp_i; + while (__gmp_j < __gmp_size) { + *(__gmp_dst + __gmp_j) = *(__gmp_src + __gmp_j); + __gmp_j += (mp_size_t)1; + } + } + + break; + } + } + __gmp_c = (unsigned long)0; + break; + } + } + } + else { + if (__gmp_src != __gmp_dst) { + while (1) { + { mp_size_t __gmp_j_0; __gmp_j_0 = (long)1; + while (__gmp_j_0 < __gmp_size) { + *(__gmp_dst + __gmp_j_0) = *(__gmp_src + __gmp_j_0); + __gmp_j_0 += (mp_size_t)1; + } + } + + break; + } + } + __gmp_c = (unsigned long)0; + } + } + + break; + } + return (__gmp_c); +} + +__inline static int __gmpn_cmp(mp_srcptr __gmp_xp, mp_srcptr __gmp_yp, + mp_size_t __gmp_size) __attribute__((__pure__)); +__inline static int __gmpn_cmp(mp_srcptr __gmp_xp, mp_srcptr __gmp_yp, + mp_size_t __gmp_size) +{ + int __gmp_result; + while (1) { + { mp_size_t __gmp_i; mp_limb_t __gmp_x; mp_limb_t __gmp_y; + __gmp_result = 0; __gmp_i = __gmp_size; + while (1) { + __gmp_i -= (mp_size_t)1; + if (! (__gmp_i >= (mp_size_t)0)) { break; } + __gmp_x = *(__gmp_xp + __gmp_i); + __gmp_y = *(__gmp_yp + __gmp_i); + if (__gmp_x != __gmp_y) { + if (__gmp_x > __gmp_y) { __gmp_result = 1; } + else { __gmp_result = -1; } + break; + } + } + } + + break; + } + return (__gmp_result); +} + +__inline static mp_limb_t __gmpn_sub(mp_ptr __gmp_wp, mp_srcptr __gmp_xp, + mp_size_t __gmp_xsize, + mp_srcptr __gmp_yp, + mp_size_t __gmp_ysize) +{ + mp_limb_t __gmp_c; + while (1) { + { mp_size_t __gmp_i; mp_limb_t __gmp_x; __gmp_i = __gmp_ysize; + if (__gmp_i != (mp_size_t)0) { + mp_limb_t tmp_0; + tmp_0 = __gmpn_sub_n(__gmp_wp,__gmp_xp,__gmp_yp,__gmp_i); + if (tmp_0) { + while (1) { + mp_size_t tmp; + if (__gmp_i >= __gmp_xsize) { + __gmp_c = (unsigned long)1; + goto __gmp_done; + } + __gmp_x = *(__gmp_xp + __gmp_i); + { /*undefined sequence*/ + tmp = __gmp_i; + __gmp_i += (mp_size_t)1; + *(__gmp_wp + tmp) = (__gmp_x - (mp_limb_t)1) & (~ ((unsigned long)0) >> 0); + } + if (! (__gmp_x == (mp_limb_t)0)) { break; } + } + } + } + if (__gmp_wp != __gmp_xp) { + while (1) { + { mp_size_t __gmp_j; __gmp_j = __gmp_i; + while (__gmp_j < __gmp_xsize) { + *(__gmp_wp + __gmp_j) = *(__gmp_xp + __gmp_j); + __gmp_j += (mp_size_t)1; + } + } + + break; + } + } __gmp_c = (unsigned long)0; __gmp_done: ; + } + + break; + } + return (__gmp_c); +} + +__inline static mp_limb_t __gmpn_sub_1(mp_ptr __gmp_dst, mp_srcptr __gmp_src, + mp_size_t __gmp_size, + mp_limb_t __gmp_n) +{ + mp_limb_t __gmp_c; + while (1) { + { mp_size_t __gmp_i; mp_limb_t __gmp_x; mp_limb_t __gmp_r; + __gmp_x = *(__gmp_src + 0); __gmp_r = __gmp_x - __gmp_n; + *(__gmp_dst + 0) = __gmp_r; + if (__gmp_x < __gmp_n) { + __gmp_c = (unsigned long)1; + __gmp_i = (long)1; + while (__gmp_i < __gmp_size) { + __gmp_x = *(__gmp_src + __gmp_i); + __gmp_r = __gmp_x - (mp_limb_t)1; + *(__gmp_dst + __gmp_i) = __gmp_r; + __gmp_i += (mp_size_t)1; + if (! (__gmp_x < (mp_limb_t)1)) { + if (__gmp_src != __gmp_dst) { + while (1) { + { mp_size_t __gmp_j; __gmp_j = __gmp_i; + while (__gmp_j < __gmp_size) { + *(__gmp_dst + __gmp_j) = *(__gmp_src + __gmp_j); + __gmp_j += (mp_size_t)1; + } + } + + break; + } + } + __gmp_c = (unsigned long)0; + break; + } + } + } + else { + if (__gmp_src != __gmp_dst) { + while (1) { + { mp_size_t __gmp_j_0; __gmp_j_0 = (long)1; + while (__gmp_j_0 < __gmp_size) { + *(__gmp_dst + __gmp_j_0) = *(__gmp_src + __gmp_j_0); + __gmp_j_0 += (mp_size_t)1; + } + } + + break; + } + } + __gmp_c = (unsigned long)0; + } + } + + break; + } + return (__gmp_c); +} + +__inline static mp_limb_t __gmpn_neg_n(mp_ptr __gmp_rp, mp_srcptr __gmp_up, + mp_size_t __gmp_n) +{ + mp_limb_t __gmp_ul; + mp_limb_t __gmp_cy; + __gmp_cy = (unsigned long)0; + while (1) { + { mp_srcptr tmp; mp_ptr tmp_0; + { /*undefined sequence*/ tmp = __gmp_up; __gmp_up ++; __gmp_ul = *tmp; + } + { /*undefined sequence*/ + tmp_0 = __gmp_rp; + __gmp_rp ++; + *tmp_0 = - __gmp_ul - __gmp_cy; + } __gmp_cy |= (unsigned long)(__gmp_ul != (mp_limb_t)0); + } + + __gmp_n -= (mp_size_t)1; + if (! (__gmp_n != (mp_size_t)0)) { break; } + } + return (__gmp_cy); +} + +/*@ terminates \false; + ensures \false; + assigns \nothing; */ +extern void exit(int status); +void e_acsl_fail(char *msg) +{ + printf((char const *)"%s\n",msg); + exit(1); + return; +} + +int T1[3]; +int T2[4]; +int main(void) +{ + int __retres; + { int i; i = 0; while (1) { if (! (i < 3)) { break; } T1[i] = i; i ++; } } + + { int i_0; i_0 = 0; + while (1) { if (! (i_0 < 4)) { break; } T2[i_0] = 2 * i_0; i_0 ++; } + } + + /*@ assert T1[0] ≡ T2[0]; */ ; + { mpz_t e_acsl_1; long e_acsl_2; mpz_t e_acsl_3; long e_acsl_4; + __gmpz_init_set_si((__mpz_struct *)(e_acsl_1),(long)0); + e_acsl_2 = __gmpz_get_si((__mpz_struct const *)(e_acsl_1)); + __gmpz_init_set_si((__mpz_struct *)(e_acsl_3),(long)0); + e_acsl_4 = __gmpz_get_si((__mpz_struct const *)(e_acsl_3)); + if (! (T1[(int)e_acsl_2] == T2[(int)e_acsl_4])) { + e_acsl_fail((char *)"(T1[0] == T2[0])"); + } __gmpz_clear((__mpz_struct *)(e_acsl_1)); + __gmpz_clear((__mpz_struct *)(e_acsl_3)); + } + + /*@ assert T1[1] ≢ T2[1]; */ ; + { mpz_t e_acsl_5; long e_acsl_6; mpz_t e_acsl_7; long e_acsl_8; + __gmpz_init_set_si((__mpz_struct *)(e_acsl_5),(long)1); + e_acsl_6 = __gmpz_get_si((__mpz_struct const *)(e_acsl_5)); + __gmpz_init_set_si((__mpz_struct *)(e_acsl_7),(long)1); + e_acsl_8 = __gmpz_get_si((__mpz_struct const *)(e_acsl_7)); + if (! (T1[(int)e_acsl_6] != T2[(int)e_acsl_8])) { + e_acsl_fail((char *)"(T1[1] != T2[1])"); + } __gmpz_clear((__mpz_struct *)(e_acsl_5)); + __gmpz_clear((__mpz_struct *)(e_acsl_7)); + } + + __retres = 0; + return (__retres); +} + + diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_cast.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_cast.c index 35e5f2596d2..dfc83898c6d 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_cast.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_cast.c @@ -7,6 +7,7 @@ struct __anonstruct___mpz_struct_6 { mp_limb_t *_mp_d ; }; typedef struct __anonstruct___mpz_struct_6 __mpz_struct; +typedef __mpz_struct mpz_t[1]; typedef mp_limb_t *mp_ptr; typedef mp_limb_t const *mp_srcptr; typedef long mp_size_t; @@ -24,17 +25,27 @@ typedef __mpq_struct *mpq_ptr; /*@ assigns \nothing; */ extern int printf(char const * __restrict __format , ...); __inline static void __gmpz_abs(mpz_ptr __gmp_w, mpz_srcptr __gmp_u); +/*@ requires \valid(x); + assigns *x; */ +extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); __inline static int __gmpz_fits_uint_p(mpz_srcptr __gmp_z) __attribute__(( __pure__)); __inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__(( __pure__)); __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__(( __pure__)); -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__(( +/*@ requires \valid(z); + assigns \nothing; */ +extern long __gmpz_get_si(__mpz_struct const * /*[1]*/ z) __attribute__(( +__pure__)); +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( __pure__)); __inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z, mp_size_t __gmp_n) __attribute__(( __pure__)); +/*@ ensures \valid(\old(z)); + assigns *z; */ +extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); __inline static void __gmpz_neg(__mpz_struct * /*[1]*/ z1, __mpz_struct const * /*[1]*/ z2); __inline static int __gmpz_perfect_square_p(mpz_srcptr __gmp_a) __attribute__(( @@ -153,16 +164,18 @@ __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) return (__retres); } -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__(( +/*@ requires \valid(z); + assigns \nothing; */ +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( __pure__)); -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) { mp_ptr __gmp_p; mp_size_t __gmp_n; mp_limb_t __gmp_l; mp_limb_t tmp; - __gmp_p = __gmp_z->_mp_d; - __gmp_n = (long)__gmp_z->_mp_size; + __gmp_p = z->_mp_d; + __gmp_n = (long)z->_mp_size; __gmp_l = *(__gmp_p + 0); if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; } else { tmp = (unsigned long)0; } @@ -560,6 +573,23 @@ int main(void) if (! ((int)x == y)) { e_acsl_fail((char *)"((int)x == y)"); } /*@ assert x ≡ (long)y; */ ; if (! (x == (long)y)) { e_acsl_fail((char *)"(x == (long)y)"); } + /*@ assert y ≡ (int)0; */ ; + { mpz_t e_acsl_1; long e_acsl_2; + __gmpz_init_set_si((__mpz_struct *)(e_acsl_1),(long)0); + e_acsl_2 = __gmpz_get_si((__mpz_struct const *)(e_acsl_1)); + if (! (y == (int)e_acsl_2)) { e_acsl_fail((char *)"(y == (int)0)"); } + __gmpz_clear((__mpz_struct *)(e_acsl_1)); + } + + /*@ assert (unsigned int)y ≡ (unsigned int)0; */ ; + { mpz_t e_acsl_3; unsigned long e_acsl_4; + __gmpz_init_set_si((__mpz_struct *)(e_acsl_3),(long)0); + e_acsl_4 = __gmpz_get_ui((__mpz_struct const *)(e_acsl_3)); + if (! ((unsigned int)y == (unsigned int)e_acsl_4)) { + e_acsl_fail((char *)"((unsigned int)y == (unsigned int)0)"); + } __gmpz_clear((__mpz_struct *)(e_acsl_3)); + } + __retres = 0; return (__retres); } diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_comparison.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_comparison.c index bffa806ee79..ef5c6acbbb6 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_comparison.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_comparison.c @@ -40,7 +40,7 @@ __inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__(( __pure__)); __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__(( __pure__)); -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__(( +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( __pure__)); __inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z, mp_size_t __gmp_n) __attribute__(( @@ -166,16 +166,18 @@ __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) return (__retres); } -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__(( +/*@ requires \valid(z); + assigns \nothing; */ +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( __pure__)); -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) { mp_ptr __gmp_p; mp_size_t __gmp_n; mp_limb_t __gmp_l; mp_limb_t tmp; - __gmp_p = __gmp_z->_mp_d; - __gmp_n = (long)__gmp_z->_mp_size; + __gmp_p = z->_mp_d; + __gmp_n = (long)z->_mp_size; __gmp_l = *(__gmp_p + 0); if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; } else { tmp = (unsigned long)0; } diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_false.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_false.c index 28cb35703c8..05dd2926413 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_false.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_false.c @@ -30,7 +30,7 @@ __inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__(( __pure__)); __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__(( __pure__)); -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__(( +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( __pure__)); __inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z, mp_size_t __gmp_n) __attribute__(( @@ -153,16 +153,18 @@ __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) return (__retres); } -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__(( +/*@ requires \valid(z); + assigns \nothing; */ +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( __pure__)); -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) { mp_ptr __gmp_p; mp_size_t __gmp_n; mp_limb_t __gmp_l; mp_limb_t tmp; - __gmp_p = __gmp_z->_mp_d; - __gmp_n = (long)__gmp_z->_mp_size; + __gmp_p = z->_mp_d; + __gmp_n = (long)z->_mp_size; __gmp_l = *(__gmp_p + 0); if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; } else { tmp = (unsigned long)0; } diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_function_contract.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_function_contract.c index d4c7a07c6a0..4c9805123aa 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_function_contract.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_function_contract.c @@ -48,7 +48,7 @@ __inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__(( __pure__)); __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__(( __pure__)); -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__(( +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( __pure__)); __inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z, mp_size_t __gmp_n) __attribute__(( @@ -177,16 +177,18 @@ __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) return (__retres); } -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__(( +/*@ requires \valid(z); + assigns \nothing; */ +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( __pure__)); -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) { mp_ptr __gmp_p; mp_size_t __gmp_n; mp_limb_t __gmp_l; mp_limb_t tmp; - __gmp_p = __gmp_z->_mp_d; - __gmp_n = (long)__gmp_z->_mp_size; + __gmp_p = z->_mp_d; + __gmp_n = (long)z->_mp_size; __gmp_l = *(__gmp_p + 0); if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; } else { tmp = (unsigned long)0; } diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_integer_constant.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_integer_constant.c index 397d3f50c84..4b4fb215760 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_integer_constant.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_integer_constant.c @@ -40,7 +40,7 @@ __inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__(( __pure__)); __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__(( __pure__)); -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__(( +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( __pure__)); __inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z, mp_size_t __gmp_n) __attribute__(( @@ -170,16 +170,18 @@ __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) return (__retres); } -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__(( +/*@ requires \valid(z); + assigns \nothing; */ +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( __pure__)); -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) { mp_ptr __gmp_p; mp_size_t __gmp_n; mp_limb_t __gmp_l; mp_limb_t tmp; - __gmp_p = __gmp_z->_mp_d; - __gmp_n = (long)__gmp_z->_mp_size; + __gmp_p = z->_mp_d; + __gmp_n = (long)z->_mp_size; __gmp_l = *(__gmp_p + 0); if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; } else { tmp = (unsigned long)0; } diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_lazy.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_lazy.c index c8521f9c1e5..7f15b38bc51 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_lazy.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_lazy.c @@ -48,7 +48,7 @@ __inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__(( __pure__)); __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__(( __pure__)); -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__(( +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( __pure__)); __inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z, mp_size_t __gmp_n) __attribute__(( @@ -180,16 +180,18 @@ __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) return (__retres); } -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__(( +/*@ requires \valid(z); + assigns \nothing; */ +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( __pure__)); -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) { mp_ptr __gmp_p; mp_size_t __gmp_n; mp_limb_t __gmp_l; mp_limb_t tmp; - __gmp_p = __gmp_z->_mp_d; - __gmp_n = (long)__gmp_z->_mp_size; + __gmp_p = z->_mp_d; + __gmp_n = (long)z->_mp_size; __gmp_l = *(__gmp_p + 0); if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; } else { tmp = (unsigned long)0; } diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_nested_code_annot.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_nested_code_annot.c index 273cdd3409e..2a00e9922ce 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_nested_code_annot.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_nested_code_annot.c @@ -40,7 +40,7 @@ __inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__(( __pure__)); __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__(( __pure__)); -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__(( +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( __pure__)); __inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z, mp_size_t __gmp_n) __attribute__(( @@ -166,16 +166,18 @@ __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) return (__retres); } -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__(( +/*@ requires \valid(z); + assigns \nothing; */ +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( __pure__)); -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) { mp_ptr __gmp_p; mp_size_t __gmp_n; mp_limb_t __gmp_l; mp_limb_t tmp; - __gmp_p = __gmp_z->_mp_d; - __gmp_n = (long)__gmp_z->_mp_size; + __gmp_p = z->_mp_d; + __gmp_n = (long)z->_mp_size; __gmp_l = *(__gmp_p + 0); if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; } else { tmp = (unsigned long)0; } diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_not.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_not.c index a365ad94736..9f9ad7bc51a 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_not.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_not.c @@ -30,7 +30,7 @@ __inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__(( __pure__)); __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__(( __pure__)); -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__(( +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( __pure__)); __inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z, mp_size_t __gmp_n) __attribute__(( @@ -153,16 +153,18 @@ __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) return (__retres); } -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__(( +/*@ requires \valid(z); + assigns \nothing; */ +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( __pure__)); -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) { mp_ptr __gmp_p; mp_size_t __gmp_n; mp_limb_t __gmp_l; mp_limb_t tmp; - __gmp_p = __gmp_z->_mp_d; - __gmp_n = (long)__gmp_z->_mp_size; + __gmp_p = z->_mp_d; + __gmp_n = (long)z->_mp_size; __gmp_l = *(__gmp_p + 0); if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; } else { tmp = (unsigned long)0; } diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_null.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_null.c new file mode 100644 index 00000000000..7f14bebf9bb --- /dev/null +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_null.c @@ -0,0 +1,577 @@ +/* Generated by Frama-C */ +typedef unsigned long size_t; +typedef unsigned long mp_limb_t; +struct __anonstruct___mpz_struct_6 { + int _mp_alloc ; + int _mp_size ; + mp_limb_t *_mp_d ; +}; +typedef struct __anonstruct___mpz_struct_6 __mpz_struct; +typedef __mpz_struct mpz_t[1]; +typedef mp_limb_t *mp_ptr; +typedef mp_limb_t const *mp_srcptr; +typedef long mp_size_t; +struct __anonstruct___mpq_struct_7 { + __mpz_struct _mp_num ; + __mpz_struct _mp_den ; +}; +typedef struct __anonstruct___mpq_struct_7 __mpq_struct; +typedef __mpz_struct const *mpz_srcptr; +typedef __mpz_struct *mpz_ptr; +typedef __mpq_struct const *mpq_srcptr; +typedef __mpq_struct *mpq_ptr; +/* compiler builtin: + long __builtin_expect(long, long); */ +/*@ assigns \nothing; */ +extern int printf(char const * __restrict __format , ...); +__inline static void __gmpz_abs(mpz_ptr __gmp_w, mpz_srcptr __gmp_u); +/*@ requires \valid(x); + assigns *x; */ +extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); +__inline static int __gmpz_fits_uint_p(mpz_srcptr __gmp_z) __attribute__(( +__pure__)); +__inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__(( +__pure__)); +__inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__(( +__pure__)); +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( +__pure__)); +__inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z, + mp_size_t __gmp_n) __attribute__(( +__pure__)); +/*@ ensures \valid(\old(z)); + assigns *z; */ +extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); +__inline static void __gmpz_neg(__mpz_struct * /*[1]*/ z1, + __mpz_struct const * /*[1]*/ z2); +__inline static int __gmpz_perfect_square_p(mpz_srcptr __gmp_a) __attribute__(( +__pure__)); +__inline static unsigned long __gmpz_popcount(mpz_srcptr __gmp_u) __attribute__(( +__pure__)); +extern void __gmpz_set(mpz_ptr, mpz_srcptr); +__inline static void __gmpz_set_q(mpz_ptr __gmp_w, mpq_srcptr __gmp_u); +__inline static size_t __gmpz_size(mpz_srcptr __gmp_z) __attribute__(( +__pure__)); +extern void __gmpz_tdiv_q(mpz_ptr, mpz_srcptr, mpz_srcptr); +__inline static void __gmpq_abs(mpq_ptr __gmp_w, mpq_srcptr __gmp_u); +__inline static void __gmpq_neg(mpq_ptr __gmp_w, mpq_srcptr __gmp_u); +extern void __gmpq_set(mpq_ptr, mpq_srcptr); +__inline static mp_limb_t __gmpn_add(mp_ptr __gmp_wp, mp_srcptr __gmp_xp, + mp_size_t __gmp_xsize, + mp_srcptr __gmp_yp, + mp_size_t __gmp_ysize); +__inline static mp_limb_t __gmpn_add_1(mp_ptr __gmp_dst, mp_srcptr __gmp_src, + mp_size_t __gmp_size, + mp_limb_t __gmp_n); +extern mp_limb_t __gmpn_add_n(mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); +__inline static int __gmpn_cmp(mp_srcptr __gmp_xp, mp_srcptr __gmp_yp, + mp_size_t __gmp_size) __attribute__((__pure__)); +__inline static mp_limb_t __gmpn_neg_n(mp_ptr __gmp_rp, mp_srcptr __gmp_up, + mp_size_t __gmp_n); +extern int __gmpn_perfect_square_p(mp_srcptr, mp_size_t) __attribute__(( +__pure__)); +extern unsigned long __gmpn_popcount(mp_srcptr, mp_size_t) __attribute__(( +__pure__)); +__inline static mp_limb_t __gmpn_sub(mp_ptr __gmp_wp, mp_srcptr __gmp_xp, + mp_size_t __gmp_xsize, + mp_srcptr __gmp_yp, + mp_size_t __gmp_ysize); +__inline static mp_limb_t __gmpn_sub_1(mp_ptr __gmp_dst, mp_srcptr __gmp_src, + mp_size_t __gmp_size, + mp_limb_t __gmp_n); +extern mp_limb_t __gmpn_sub_n(mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); +__inline static void __gmpz_abs(mpz_ptr __gmp_w, mpz_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) { __gmpz_set(__gmp_w,__gmp_u); } + if (__gmp_w->_mp_size >= 0) { __gmp_w->_mp_size = __gmp_w->_mp_size; } + else { __gmp_w->_mp_size = - __gmp_w->_mp_size; } + return; +} + +__inline static int __gmpz_fits_uint_p(mpz_srcptr __gmp_z) __attribute__(( +__pure__)); +__inline static int __gmpz_fits_uint_p(mpz_srcptr __gmp_z) +{ + int __retres; + mp_size_t __gmp_n; + mp_ptr __gmp_p; + int tmp; + __gmp_n = (long)__gmp_z->_mp_size; + __gmp_p = __gmp_z->_mp_d; + if (__gmp_n == (mp_size_t)0) { tmp = 1; } + else { + if (__gmp_n == (mp_size_t)1) { + if (*(__gmp_p + 0) <= (mp_limb_t)(~ ((unsigned int)0))) { tmp = 1; } + else { tmp = 0; } + } + else { tmp = 0; } + } + __retres = tmp; + goto return_label; + return_label: /* internal */ + return (__retres); +} + +__inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__(( +__pure__)); +__inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) +{ + int __retres; + mp_size_t __gmp_n; + mp_ptr __gmp_p; + int tmp; + __gmp_n = (long)__gmp_z->_mp_size; + __gmp_p = __gmp_z->_mp_d; + if (__gmp_n == (mp_size_t)0) { tmp = 1; } + else { + if (__gmp_n == (mp_size_t)1) { + if (*(__gmp_p + 0) <= ~ ((unsigned long)0)) { tmp = 1; } + else { tmp = 0; } + } + else { tmp = 0; } + } + __retres = tmp; + goto return_label; + return_label: /* internal */ + return (__retres); +} + +__inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__(( +__pure__)); +__inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) +{ + int __retres; + mp_size_t __gmp_n; + mp_ptr __gmp_p; + int tmp; + __gmp_n = (long)__gmp_z->_mp_size; + __gmp_p = __gmp_z->_mp_d; + if (__gmp_n == (mp_size_t)0) { tmp = 1; } + else { + if (__gmp_n == (mp_size_t)1) { + if (*(__gmp_p + 0) <= (mp_limb_t)((unsigned short)(~ 0))) { tmp = 1; } + else { tmp = 0; } + } + else { tmp = 0; } + } + __retres = tmp; + goto return_label; + return_label: /* internal */ + return (__retres); +} + +/*@ requires \valid(z); + assigns \nothing; */ +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( +__pure__)); +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) +{ + mp_ptr __gmp_p; + mp_size_t __gmp_n; + mp_limb_t __gmp_l; + mp_limb_t tmp; + __gmp_p = z->_mp_d; + __gmp_n = (long)z->_mp_size; + __gmp_l = *(__gmp_p + 0); + if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; } + else { tmp = (unsigned long)0; } + return (tmp); +} + +__inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z, + mp_size_t __gmp_n) __attribute__(( +__pure__)); +__inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z, + mp_size_t __gmp_n) +{ + mp_limb_t __gmp_result; + long tmp_1; + int tmp_0; + __gmp_result = (unsigned long)0; + { /*undefined sequence*/ + if (__gmp_n >= (mp_size_t)0) { + int tmp; + { /*undefined sequence*/ + if (__gmp_z->_mp_size >= 0) { tmp = __gmp_z->_mp_size; } + else { tmp = - __gmp_z->_mp_size; } + ; + } + if (__gmp_n < (mp_size_t)tmp) { tmp_0 = 1; } + else { tmp_0 = 0; } + } + else { tmp_0 = 0; } + tmp_1 = __builtin_expect((long)(tmp_0 != 0),(long)1); + } + if (tmp_1) { __gmp_result = *(__gmp_z->_mp_d + __gmp_n); } + return (__gmp_result); +} + +/*@ requires \valid(z1); + requires \valid(z2); + assigns *z1; */ +__inline static void __gmpz_neg(__mpz_struct * /*[1]*/ z1, + __mpz_struct const * /*[1]*/ z2) +{ + if (z1 != z2) { __gmpz_set(z1,z2); } + z1->_mp_size = - z1->_mp_size; + return; +} + +__inline static int __gmpz_perfect_square_p(mpz_srcptr __gmp_a) __attribute__(( +__pure__)); +__inline static int __gmpz_perfect_square_p(mpz_srcptr __gmp_a) +{ + mp_size_t __gmp_asize; + int __gmp_result; + long tmp; + __gmp_asize = (long)__gmp_a->_mp_size; + __gmp_result = __gmp_asize >= (mp_size_t)0; + tmp = __builtin_expect((long)((__gmp_asize > (mp_size_t)0) != 0),(long)1); + if (tmp) { + __gmp_result = __gmpn_perfect_square_p((mp_limb_t const *)__gmp_a->_mp_d, + __gmp_asize); + } + return (__gmp_result); +} + +__inline static unsigned long __gmpz_popcount(mpz_srcptr __gmp_u) __attribute__(( +__pure__)); +__inline static unsigned long __gmpz_popcount(mpz_srcptr __gmp_u) +{ + mp_size_t __gmp_usize; + unsigned long __gmp_result; + long tmp; + __gmp_usize = (long)__gmp_u->_mp_size; + if (__gmp_usize < (mp_size_t)0) { __gmp_result = ~ ((unsigned long)0); } + else { __gmp_result = (unsigned long)0; } + tmp = __builtin_expect((long)((__gmp_usize > (mp_size_t)0) != 0),(long)1); + if (tmp) { + __gmp_result = __gmpn_popcount((mp_limb_t const *)__gmp_u->_mp_d, + __gmp_usize); + } + return (__gmp_result); +} + +__inline static void __gmpz_set_q(mpz_ptr __gmp_w, mpq_srcptr __gmp_u) +{ + __gmpz_tdiv_q(__gmp_w,& __gmp_u->_mp_num,& __gmp_u->_mp_den); + return; +} + +__inline static size_t __gmpz_size(mpz_srcptr __gmp_z) __attribute__(( +__pure__)); +__inline static size_t __gmpz_size(mpz_srcptr __gmp_z) +{ + size_t __retres; + int tmp; + if (__gmp_z->_mp_size >= 0) { tmp = __gmp_z->_mp_size; } + else { tmp = - __gmp_z->_mp_size; } + __retres = (unsigned long)tmp; + return (__retres); +} + +__inline static void __gmpq_abs(mpq_ptr __gmp_w, mpq_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) { __gmpq_set(__gmp_w,__gmp_u); } + if (__gmp_w->_mp_num._mp_size >= 0) { + __gmp_w->_mp_num._mp_size = __gmp_w->_mp_num._mp_size; + } + else { __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size; } + return; +} + +__inline static void __gmpq_neg(mpq_ptr __gmp_w, mpq_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) { __gmpq_set(__gmp_w,__gmp_u); } + __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size; + return; +} + +__inline static mp_limb_t __gmpn_add(mp_ptr __gmp_wp, mp_srcptr __gmp_xp, + mp_size_t __gmp_xsize, + mp_srcptr __gmp_yp, + mp_size_t __gmp_ysize) +{ + mp_limb_t __gmp_c; + while (1) { + { mp_size_t __gmp_i; mp_limb_t __gmp_x; __gmp_i = __gmp_ysize; + if (__gmp_i != (mp_size_t)0) { + mp_limb_t tmp_1; + tmp_1 = __gmpn_add_n(__gmp_wp,__gmp_xp,__gmp_yp,__gmp_i); + if (tmp_1) { + while (1) { + mp_size_t tmp; + mp_limb_t tmp_0; + if (__gmp_i >= __gmp_xsize) { + __gmp_c = (unsigned long)1; + goto __gmp_done; + } + __gmp_x = *(__gmp_xp + __gmp_i); + { /*undefined sequence*/ + tmp = __gmp_i; + __gmp_i += (mp_size_t)1; + tmp_0 = (__gmp_x + (mp_limb_t)1) & (~ ((unsigned long)0) >> 0); + *(__gmp_wp + tmp) = tmp_0; + } + if (! (tmp_0 == (mp_limb_t)0)) { break; } + } + } + } + if (__gmp_wp != __gmp_xp) { + while (1) { + { mp_size_t __gmp_j; __gmp_j = __gmp_i; + while (__gmp_j < __gmp_xsize) { + *(__gmp_wp + __gmp_j) = *(__gmp_xp + __gmp_j); + __gmp_j += (mp_size_t)1; + } + } + + break; + } + } __gmp_c = (unsigned long)0; __gmp_done: ; + } + + break; + } + return (__gmp_c); +} + +__inline static mp_limb_t __gmpn_add_1(mp_ptr __gmp_dst, mp_srcptr __gmp_src, + mp_size_t __gmp_size, + mp_limb_t __gmp_n) +{ + mp_limb_t __gmp_c; + while (1) { + { mp_size_t __gmp_i; mp_limb_t __gmp_x; mp_limb_t __gmp_r; + __gmp_x = *(__gmp_src + 0); __gmp_r = __gmp_x + __gmp_n; + *(__gmp_dst + 0) = __gmp_r; + if (__gmp_r < __gmp_n) { + __gmp_c = (unsigned long)1; + __gmp_i = (long)1; + while (__gmp_i < __gmp_size) { + __gmp_x = *(__gmp_src + __gmp_i); + __gmp_r = __gmp_x + (mp_limb_t)1; + *(__gmp_dst + __gmp_i) = __gmp_r; + __gmp_i += (mp_size_t)1; + if (! (__gmp_r < (mp_limb_t)1)) { + if (__gmp_src != __gmp_dst) { + while (1) { + { mp_size_t __gmp_j; __gmp_j = __gmp_i; + while (__gmp_j < __gmp_size) { + *(__gmp_dst + __gmp_j) = *(__gmp_src + __gmp_j); + __gmp_j += (mp_size_t)1; + } + } + + break; + } + } + __gmp_c = (unsigned long)0; + break; + } + } + } + else { + if (__gmp_src != __gmp_dst) { + while (1) { + { mp_size_t __gmp_j_0; __gmp_j_0 = (long)1; + while (__gmp_j_0 < __gmp_size) { + *(__gmp_dst + __gmp_j_0) = *(__gmp_src + __gmp_j_0); + __gmp_j_0 += (mp_size_t)1; + } + } + + break; + } + } + __gmp_c = (unsigned long)0; + } + } + + break; + } + return (__gmp_c); +} + +__inline static int __gmpn_cmp(mp_srcptr __gmp_xp, mp_srcptr __gmp_yp, + mp_size_t __gmp_size) __attribute__((__pure__)); +__inline static int __gmpn_cmp(mp_srcptr __gmp_xp, mp_srcptr __gmp_yp, + mp_size_t __gmp_size) +{ + int __gmp_result; + while (1) { + { mp_size_t __gmp_i; mp_limb_t __gmp_x; mp_limb_t __gmp_y; + __gmp_result = 0; __gmp_i = __gmp_size; + while (1) { + __gmp_i -= (mp_size_t)1; + if (! (__gmp_i >= (mp_size_t)0)) { break; } + __gmp_x = *(__gmp_xp + __gmp_i); + __gmp_y = *(__gmp_yp + __gmp_i); + if (__gmp_x != __gmp_y) { + if (__gmp_x > __gmp_y) { __gmp_result = 1; } + else { __gmp_result = -1; } + break; + } + } + } + + break; + } + return (__gmp_result); +} + +__inline static mp_limb_t __gmpn_sub(mp_ptr __gmp_wp, mp_srcptr __gmp_xp, + mp_size_t __gmp_xsize, + mp_srcptr __gmp_yp, + mp_size_t __gmp_ysize) +{ + mp_limb_t __gmp_c; + while (1) { + { mp_size_t __gmp_i; mp_limb_t __gmp_x; __gmp_i = __gmp_ysize; + if (__gmp_i != (mp_size_t)0) { + mp_limb_t tmp_0; + tmp_0 = __gmpn_sub_n(__gmp_wp,__gmp_xp,__gmp_yp,__gmp_i); + if (tmp_0) { + while (1) { + mp_size_t tmp; + if (__gmp_i >= __gmp_xsize) { + __gmp_c = (unsigned long)1; + goto __gmp_done; + } + __gmp_x = *(__gmp_xp + __gmp_i); + { /*undefined sequence*/ + tmp = __gmp_i; + __gmp_i += (mp_size_t)1; + *(__gmp_wp + tmp) = (__gmp_x - (mp_limb_t)1) & (~ ((unsigned long)0) >> 0); + } + if (! (__gmp_x == (mp_limb_t)0)) { break; } + } + } + } + if (__gmp_wp != __gmp_xp) { + while (1) { + { mp_size_t __gmp_j; __gmp_j = __gmp_i; + while (__gmp_j < __gmp_xsize) { + *(__gmp_wp + __gmp_j) = *(__gmp_xp + __gmp_j); + __gmp_j += (mp_size_t)1; + } + } + + break; + } + } __gmp_c = (unsigned long)0; __gmp_done: ; + } + + break; + } + return (__gmp_c); +} + +__inline static mp_limb_t __gmpn_sub_1(mp_ptr __gmp_dst, mp_srcptr __gmp_src, + mp_size_t __gmp_size, + mp_limb_t __gmp_n) +{ + mp_limb_t __gmp_c; + while (1) { + { mp_size_t __gmp_i; mp_limb_t __gmp_x; mp_limb_t __gmp_r; + __gmp_x = *(__gmp_src + 0); __gmp_r = __gmp_x - __gmp_n; + *(__gmp_dst + 0) = __gmp_r; + if (__gmp_x < __gmp_n) { + __gmp_c = (unsigned long)1; + __gmp_i = (long)1; + while (__gmp_i < __gmp_size) { + __gmp_x = *(__gmp_src + __gmp_i); + __gmp_r = __gmp_x - (mp_limb_t)1; + *(__gmp_dst + __gmp_i) = __gmp_r; + __gmp_i += (mp_size_t)1; + if (! (__gmp_x < (mp_limb_t)1)) { + if (__gmp_src != __gmp_dst) { + while (1) { + { mp_size_t __gmp_j; __gmp_j = __gmp_i; + while (__gmp_j < __gmp_size) { + *(__gmp_dst + __gmp_j) = *(__gmp_src + __gmp_j); + __gmp_j += (mp_size_t)1; + } + } + + break; + } + } + __gmp_c = (unsigned long)0; + break; + } + } + } + else { + if (__gmp_src != __gmp_dst) { + while (1) { + { mp_size_t __gmp_j_0; __gmp_j_0 = (long)1; + while (__gmp_j_0 < __gmp_size) { + *(__gmp_dst + __gmp_j_0) = *(__gmp_src + __gmp_j_0); + __gmp_j_0 += (mp_size_t)1; + } + } + + break; + } + } + __gmp_c = (unsigned long)0; + } + } + + break; + } + return (__gmp_c); +} + +__inline static mp_limb_t __gmpn_neg_n(mp_ptr __gmp_rp, mp_srcptr __gmp_up, + mp_size_t __gmp_n) +{ + mp_limb_t __gmp_ul; + mp_limb_t __gmp_cy; + __gmp_cy = (unsigned long)0; + while (1) { + { mp_srcptr tmp; mp_ptr tmp_0; + { /*undefined sequence*/ tmp = __gmp_up; __gmp_up ++; __gmp_ul = *tmp; + } + { /*undefined sequence*/ + tmp_0 = __gmp_rp; + __gmp_rp ++; + *tmp_0 = - __gmp_ul - __gmp_cy; + } __gmp_cy |= (unsigned long)(__gmp_ul != (mp_limb_t)0); + } + + __gmp_n -= (mp_size_t)1; + if (! (__gmp_n != (mp_size_t)0)) { break; } + } + return (__gmp_cy); +} + +/*@ terminates \false; + ensures \false; + assigns \nothing; */ +extern void exit(int status); +void e_acsl_fail(char *msg) +{ + printf((char const *)"%s\n",msg); + exit(1); + return; +} + +int main(void) +{ + int __retres; + /*@ assert \null ≡ (void *)0; */ ; + { mpz_t e_acsl_1; unsigned long e_acsl_2; + __gmpz_init_set_si((__mpz_struct *)(e_acsl_1),(long)0); + e_acsl_2 = __gmpz_get_ui((__mpz_struct const *)(e_acsl_1)); + if (! ((void *)0 == (void *)e_acsl_2)) { + e_acsl_fail((char *)"(\\null == (void *)0)"); + } __gmpz_clear((__mpz_struct *)(e_acsl_1)); + } + + __retres = 0; + return (__retres); +} + + diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_other_constants.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_other_constants.c index 79471acb879..f3570d72c0e 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_other_constants.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_other_constants.c @@ -44,7 +44,7 @@ __inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__(( __pure__)); __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__(( __pure__)); -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__(( +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( __pure__)); __inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z, mp_size_t __gmp_n) __attribute__(( @@ -170,16 +170,18 @@ __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) return (__retres); } -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__(( +/*@ requires \valid(z); + assigns \nothing; */ +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( __pure__)); -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) { mp_ptr __gmp_p; mp_size_t __gmp_n; mp_limb_t __gmp_l; mp_limb_t tmp; - __gmp_p = __gmp_z->_mp_d; - __gmp_n = (long)__gmp_z->_mp_size; + __gmp_p = z->_mp_d; + __gmp_n = (long)z->_mp_size; __gmp_l = *(__gmp_p + 0); if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; } else { tmp = (unsigned long)0; } diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr.c new file mode 100644 index 00000000000..76d41d25b06 --- /dev/null +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_ptr.c @@ -0,0 +1,738 @@ +/* Generated by Frama-C */ +typedef unsigned long size_t; +typedef unsigned long mp_limb_t; +struct __anonstruct___mpz_struct_6 { + int _mp_alloc ; + int _mp_size ; + mp_limb_t *_mp_d ; +}; +typedef struct __anonstruct___mpz_struct_6 __mpz_struct; +typedef __mpz_struct mpz_t[1]; +typedef mp_limb_t *mp_ptr; +typedef mp_limb_t const *mp_srcptr; +typedef long mp_size_t; +struct __anonstruct___mpq_struct_7 { + __mpz_struct _mp_num ; + __mpz_struct _mp_den ; +}; +typedef struct __anonstruct___mpq_struct_7 __mpq_struct; +typedef __mpz_struct const *mpz_srcptr; +typedef __mpz_struct *mpz_ptr; +typedef __mpq_struct const *mpq_srcptr; +typedef __mpq_struct *mpq_ptr; +/* compiler builtin: + long __builtin_expect(long, long); */ +/*@ assigns \nothing; */ +extern int printf(char const * __restrict __format , ...); +__inline static void __gmpz_abs(mpz_ptr __gmp_w, mpz_srcptr __gmp_u); +/*@ requires \valid(z1); + requires \valid(z2); + requires \valid(z3); + assigns *z1; +*/ +extern void __gmpz_add(__mpz_struct * /*[1]*/ z1, + __mpz_struct const * /*[1]*/ z2, + __mpz_struct const * /*[1]*/ z3); +/*@ requires \valid(x); + assigns *x; */ +extern void __gmpz_clear(__mpz_struct * /*[1]*/ x); +/*@ requires \valid(z1); + requires \valid(z2); + assigns \nothing; */ +extern int __gmpz_cmp(__mpz_struct const * /*[1]*/ z1, + __mpz_struct const * /*[1]*/ z2) __attribute__(( +__pure__)); +__inline static int __gmpz_fits_uint_p(mpz_srcptr __gmp_z) __attribute__(( +__pure__)); +__inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__(( +__pure__)); +__inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__(( +__pure__)); +/*@ requires \valid(z); + assigns \nothing; */ +extern long __gmpz_get_si(__mpz_struct const * /*[1]*/ z) __attribute__(( +__pure__)); +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( +__pure__)); +__inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z, + mp_size_t __gmp_n) __attribute__(( +__pure__)); +/*@ ensures \valid(\old(x)); + assigns *x; */ +extern void __gmpz_init(__mpz_struct * /*[1]*/ x); +/*@ ensures \valid(\old(z)); + assigns *z; */ +extern void __gmpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); +__inline static void __gmpz_neg(__mpz_struct * /*[1]*/ z1, + __mpz_struct const * /*[1]*/ z2); +__inline static int __gmpz_perfect_square_p(mpz_srcptr __gmp_a) __attribute__(( +__pure__)); +__inline static unsigned long __gmpz_popcount(mpz_srcptr __gmp_u) __attribute__(( +__pure__)); +extern void __gmpz_set(mpz_ptr, mpz_srcptr); +__inline static void __gmpz_set_q(mpz_ptr __gmp_w, mpq_srcptr __gmp_u); +__inline static size_t __gmpz_size(mpz_srcptr __gmp_z) __attribute__(( +__pure__)); +/*@ requires \valid(z1); + requires \valid(z2); + requires \valid(z3); + assigns *z1; +*/ +extern void __gmpz_sub(__mpz_struct * /*[1]*/ z1, + __mpz_struct const * /*[1]*/ z2, + __mpz_struct const * /*[1]*/ z3); +extern void __gmpz_tdiv_q(mpz_ptr, mpz_srcptr, mpz_srcptr); +__inline static void __gmpq_abs(mpq_ptr __gmp_w, mpq_srcptr __gmp_u); +__inline static void __gmpq_neg(mpq_ptr __gmp_w, mpq_srcptr __gmp_u); +extern void __gmpq_set(mpq_ptr, mpq_srcptr); +__inline static mp_limb_t __gmpn_add(mp_ptr __gmp_wp, mp_srcptr __gmp_xp, + mp_size_t __gmp_xsize, + mp_srcptr __gmp_yp, + mp_size_t __gmp_ysize); +__inline static mp_limb_t __gmpn_add_1(mp_ptr __gmp_dst, mp_srcptr __gmp_src, + mp_size_t __gmp_size, + mp_limb_t __gmp_n); +extern mp_limb_t __gmpn_add_n(mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); +__inline static int __gmpn_cmp(mp_srcptr __gmp_xp, mp_srcptr __gmp_yp, + mp_size_t __gmp_size) __attribute__((__pure__)); +__inline static mp_limb_t __gmpn_neg_n(mp_ptr __gmp_rp, mp_srcptr __gmp_up, + mp_size_t __gmp_n); +extern int __gmpn_perfect_square_p(mp_srcptr, mp_size_t) __attribute__(( +__pure__)); +extern unsigned long __gmpn_popcount(mp_srcptr, mp_size_t) __attribute__(( +__pure__)); +__inline static mp_limb_t __gmpn_sub(mp_ptr __gmp_wp, mp_srcptr __gmp_xp, + mp_size_t __gmp_xsize, + mp_srcptr __gmp_yp, + mp_size_t __gmp_ysize); +__inline static mp_limb_t __gmpn_sub_1(mp_ptr __gmp_dst, mp_srcptr __gmp_src, + mp_size_t __gmp_size, + mp_limb_t __gmp_n); +extern mp_limb_t __gmpn_sub_n(mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); +__inline static void __gmpz_abs(mpz_ptr __gmp_w, mpz_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) { __gmpz_set(__gmp_w,__gmp_u); } + if (__gmp_w->_mp_size >= 0) { __gmp_w->_mp_size = __gmp_w->_mp_size; } + else { __gmp_w->_mp_size = - __gmp_w->_mp_size; } + return; +} + +__inline static int __gmpz_fits_uint_p(mpz_srcptr __gmp_z) __attribute__(( +__pure__)); +__inline static int __gmpz_fits_uint_p(mpz_srcptr __gmp_z) +{ + int __retres; + mp_size_t __gmp_n; + mp_ptr __gmp_p; + int tmp; + __gmp_n = (long)__gmp_z->_mp_size; + __gmp_p = __gmp_z->_mp_d; + if (__gmp_n == (mp_size_t)0) { tmp = 1; } + else { + if (__gmp_n == (mp_size_t)1) { + if (*(__gmp_p + 0) <= (mp_limb_t)(~ ((unsigned int)0))) { tmp = 1; } + else { tmp = 0; } + } + else { tmp = 0; } + } + __retres = tmp; + goto return_label; + return_label: /* internal */ + return (__retres); +} + +__inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__(( +__pure__)); +__inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) +{ + int __retres; + mp_size_t __gmp_n; + mp_ptr __gmp_p; + int tmp; + __gmp_n = (long)__gmp_z->_mp_size; + __gmp_p = __gmp_z->_mp_d; + if (__gmp_n == (mp_size_t)0) { tmp = 1; } + else { + if (__gmp_n == (mp_size_t)1) { + if (*(__gmp_p + 0) <= ~ ((unsigned long)0)) { tmp = 1; } + else { tmp = 0; } + } + else { tmp = 0; } + } + __retres = tmp; + goto return_label; + return_label: /* internal */ + return (__retres); +} + +__inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__(( +__pure__)); +__inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) +{ + int __retres; + mp_size_t __gmp_n; + mp_ptr __gmp_p; + int tmp; + __gmp_n = (long)__gmp_z->_mp_size; + __gmp_p = __gmp_z->_mp_d; + if (__gmp_n == (mp_size_t)0) { tmp = 1; } + else { + if (__gmp_n == (mp_size_t)1) { + if (*(__gmp_p + 0) <= (mp_limb_t)((unsigned short)(~ 0))) { tmp = 1; } + else { tmp = 0; } + } + else { tmp = 0; } + } + __retres = tmp; + goto return_label; + return_label: /* internal */ + return (__retres); +} + +/*@ requires \valid(z); + assigns \nothing; */ +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( +__pure__)); +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) +{ + mp_ptr __gmp_p; + mp_size_t __gmp_n; + mp_limb_t __gmp_l; + mp_limb_t tmp; + __gmp_p = z->_mp_d; + __gmp_n = (long)z->_mp_size; + __gmp_l = *(__gmp_p + 0); + if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; } + else { tmp = (unsigned long)0; } + return (tmp); +} + +__inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z, + mp_size_t __gmp_n) __attribute__(( +__pure__)); +__inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z, + mp_size_t __gmp_n) +{ + mp_limb_t __gmp_result; + long tmp_1; + int tmp_0; + __gmp_result = (unsigned long)0; + { /*undefined sequence*/ + if (__gmp_n >= (mp_size_t)0) { + int tmp; + { /*undefined sequence*/ + if (__gmp_z->_mp_size >= 0) { tmp = __gmp_z->_mp_size; } + else { tmp = - __gmp_z->_mp_size; } + ; + } + if (__gmp_n < (mp_size_t)tmp) { tmp_0 = 1; } + else { tmp_0 = 0; } + } + else { tmp_0 = 0; } + tmp_1 = __builtin_expect((long)(tmp_0 != 0),(long)1); + } + if (tmp_1) { __gmp_result = *(__gmp_z->_mp_d + __gmp_n); } + return (__gmp_result); +} + +/*@ requires \valid(z1); + requires \valid(z2); + assigns *z1; */ +__inline static void __gmpz_neg(__mpz_struct * /*[1]*/ z1, + __mpz_struct const * /*[1]*/ z2) +{ + if (z1 != z2) { __gmpz_set(z1,z2); } + z1->_mp_size = - z1->_mp_size; + return; +} + +__inline static int __gmpz_perfect_square_p(mpz_srcptr __gmp_a) __attribute__(( +__pure__)); +__inline static int __gmpz_perfect_square_p(mpz_srcptr __gmp_a) +{ + mp_size_t __gmp_asize; + int __gmp_result; + long tmp; + __gmp_asize = (long)__gmp_a->_mp_size; + __gmp_result = __gmp_asize >= (mp_size_t)0; + tmp = __builtin_expect((long)((__gmp_asize > (mp_size_t)0) != 0),(long)1); + if (tmp) { + __gmp_result = __gmpn_perfect_square_p((mp_limb_t const *)__gmp_a->_mp_d, + __gmp_asize); + } + return (__gmp_result); +} + +__inline static unsigned long __gmpz_popcount(mpz_srcptr __gmp_u) __attribute__(( +__pure__)); +__inline static unsigned long __gmpz_popcount(mpz_srcptr __gmp_u) +{ + mp_size_t __gmp_usize; + unsigned long __gmp_result; + long tmp; + __gmp_usize = (long)__gmp_u->_mp_size; + if (__gmp_usize < (mp_size_t)0) { __gmp_result = ~ ((unsigned long)0); } + else { __gmp_result = (unsigned long)0; } + tmp = __builtin_expect((long)((__gmp_usize > (mp_size_t)0) != 0),(long)1); + if (tmp) { + __gmp_result = __gmpn_popcount((mp_limb_t const *)__gmp_u->_mp_d, + __gmp_usize); + } + return (__gmp_result); +} + +__inline static void __gmpz_set_q(mpz_ptr __gmp_w, mpq_srcptr __gmp_u) +{ + __gmpz_tdiv_q(__gmp_w,& __gmp_u->_mp_num,& __gmp_u->_mp_den); + return; +} + +__inline static size_t __gmpz_size(mpz_srcptr __gmp_z) __attribute__(( +__pure__)); +__inline static size_t __gmpz_size(mpz_srcptr __gmp_z) +{ + size_t __retres; + int tmp; + if (__gmp_z->_mp_size >= 0) { tmp = __gmp_z->_mp_size; } + else { tmp = - __gmp_z->_mp_size; } + __retres = (unsigned long)tmp; + return (__retres); +} + +__inline static void __gmpq_abs(mpq_ptr __gmp_w, mpq_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) { __gmpq_set(__gmp_w,__gmp_u); } + if (__gmp_w->_mp_num._mp_size >= 0) { + __gmp_w->_mp_num._mp_size = __gmp_w->_mp_num._mp_size; + } + else { __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size; } + return; +} + +__inline static void __gmpq_neg(mpq_ptr __gmp_w, mpq_srcptr __gmp_u) +{ + if (__gmp_w != __gmp_u) { __gmpq_set(__gmp_w,__gmp_u); } + __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size; + return; +} + +__inline static mp_limb_t __gmpn_add(mp_ptr __gmp_wp, mp_srcptr __gmp_xp, + mp_size_t __gmp_xsize, + mp_srcptr __gmp_yp, + mp_size_t __gmp_ysize) +{ + mp_limb_t __gmp_c; + while (1) { + { mp_size_t __gmp_i; mp_limb_t __gmp_x; __gmp_i = __gmp_ysize; + if (__gmp_i != (mp_size_t)0) { + mp_limb_t tmp_1; + tmp_1 = __gmpn_add_n(__gmp_wp,__gmp_xp,__gmp_yp,__gmp_i); + if (tmp_1) { + while (1) { + mp_size_t tmp; + mp_limb_t tmp_0; + if (__gmp_i >= __gmp_xsize) { + __gmp_c = (unsigned long)1; + goto __gmp_done; + } + __gmp_x = *(__gmp_xp + __gmp_i); + { /*undefined sequence*/ + tmp = __gmp_i; + __gmp_i += (mp_size_t)1; + tmp_0 = (__gmp_x + (mp_limb_t)1) & (~ ((unsigned long)0) >> 0); + *(__gmp_wp + tmp) = tmp_0; + } + if (! (tmp_0 == (mp_limb_t)0)) { break; } + } + } + } + if (__gmp_wp != __gmp_xp) { + while (1) { + { mp_size_t __gmp_j; __gmp_j = __gmp_i; + while (__gmp_j < __gmp_xsize) { + *(__gmp_wp + __gmp_j) = *(__gmp_xp + __gmp_j); + __gmp_j += (mp_size_t)1; + } + } + + break; + } + } __gmp_c = (unsigned long)0; __gmp_done: ; + } + + break; + } + return (__gmp_c); +} + +__inline static mp_limb_t __gmpn_add_1(mp_ptr __gmp_dst, mp_srcptr __gmp_src, + mp_size_t __gmp_size, + mp_limb_t __gmp_n) +{ + mp_limb_t __gmp_c; + while (1) { + { mp_size_t __gmp_i; mp_limb_t __gmp_x; mp_limb_t __gmp_r; + __gmp_x = *(__gmp_src + 0); __gmp_r = __gmp_x + __gmp_n; + *(__gmp_dst + 0) = __gmp_r; + if (__gmp_r < __gmp_n) { + __gmp_c = (unsigned long)1; + __gmp_i = (long)1; + while (__gmp_i < __gmp_size) { + __gmp_x = *(__gmp_src + __gmp_i); + __gmp_r = __gmp_x + (mp_limb_t)1; + *(__gmp_dst + __gmp_i) = __gmp_r; + __gmp_i += (mp_size_t)1; + if (! (__gmp_r < (mp_limb_t)1)) { + if (__gmp_src != __gmp_dst) { + while (1) { + { mp_size_t __gmp_j; __gmp_j = __gmp_i; + while (__gmp_j < __gmp_size) { + *(__gmp_dst + __gmp_j) = *(__gmp_src + __gmp_j); + __gmp_j += (mp_size_t)1; + } + } + + break; + } + } + __gmp_c = (unsigned long)0; + break; + } + } + } + else { + if (__gmp_src != __gmp_dst) { + while (1) { + { mp_size_t __gmp_j_0; __gmp_j_0 = (long)1; + while (__gmp_j_0 < __gmp_size) { + *(__gmp_dst + __gmp_j_0) = *(__gmp_src + __gmp_j_0); + __gmp_j_0 += (mp_size_t)1; + } + } + + break; + } + } + __gmp_c = (unsigned long)0; + } + } + + break; + } + return (__gmp_c); +} + +__inline static int __gmpn_cmp(mp_srcptr __gmp_xp, mp_srcptr __gmp_yp, + mp_size_t __gmp_size) __attribute__((__pure__)); +__inline static int __gmpn_cmp(mp_srcptr __gmp_xp, mp_srcptr __gmp_yp, + mp_size_t __gmp_size) +{ + int __gmp_result; + while (1) { + { mp_size_t __gmp_i; mp_limb_t __gmp_x; mp_limb_t __gmp_y; + __gmp_result = 0; __gmp_i = __gmp_size; + while (1) { + __gmp_i -= (mp_size_t)1; + if (! (__gmp_i >= (mp_size_t)0)) { break; } + __gmp_x = *(__gmp_xp + __gmp_i); + __gmp_y = *(__gmp_yp + __gmp_i); + if (__gmp_x != __gmp_y) { + if (__gmp_x > __gmp_y) { __gmp_result = 1; } + else { __gmp_result = -1; } + break; + } + } + } + + break; + } + return (__gmp_result); +} + +__inline static mp_limb_t __gmpn_sub(mp_ptr __gmp_wp, mp_srcptr __gmp_xp, + mp_size_t __gmp_xsize, + mp_srcptr __gmp_yp, + mp_size_t __gmp_ysize) +{ + mp_limb_t __gmp_c; + while (1) { + { mp_size_t __gmp_i; mp_limb_t __gmp_x; __gmp_i = __gmp_ysize; + if (__gmp_i != (mp_size_t)0) { + mp_limb_t tmp_0; + tmp_0 = __gmpn_sub_n(__gmp_wp,__gmp_xp,__gmp_yp,__gmp_i); + if (tmp_0) { + while (1) { + mp_size_t tmp; + if (__gmp_i >= __gmp_xsize) { + __gmp_c = (unsigned long)1; + goto __gmp_done; + } + __gmp_x = *(__gmp_xp + __gmp_i); + { /*undefined sequence*/ + tmp = __gmp_i; + __gmp_i += (mp_size_t)1; + *(__gmp_wp + tmp) = (__gmp_x - (mp_limb_t)1) & (~ ((unsigned long)0) >> 0); + } + if (! (__gmp_x == (mp_limb_t)0)) { break; } + } + } + } + if (__gmp_wp != __gmp_xp) { + while (1) { + { mp_size_t __gmp_j; __gmp_j = __gmp_i; + while (__gmp_j < __gmp_xsize) { + *(__gmp_wp + __gmp_j) = *(__gmp_xp + __gmp_j); + __gmp_j += (mp_size_t)1; + } + } + + break; + } + } __gmp_c = (unsigned long)0; __gmp_done: ; + } + + break; + } + return (__gmp_c); +} + +__inline static mp_limb_t __gmpn_sub_1(mp_ptr __gmp_dst, mp_srcptr __gmp_src, + mp_size_t __gmp_size, + mp_limb_t __gmp_n) +{ + mp_limb_t __gmp_c; + while (1) { + { mp_size_t __gmp_i; mp_limb_t __gmp_x; mp_limb_t __gmp_r; + __gmp_x = *(__gmp_src + 0); __gmp_r = __gmp_x - __gmp_n; + *(__gmp_dst + 0) = __gmp_r; + if (__gmp_x < __gmp_n) { + __gmp_c = (unsigned long)1; + __gmp_i = (long)1; + while (__gmp_i < __gmp_size) { + __gmp_x = *(__gmp_src + __gmp_i); + __gmp_r = __gmp_x - (mp_limb_t)1; + *(__gmp_dst + __gmp_i) = __gmp_r; + __gmp_i += (mp_size_t)1; + if (! (__gmp_x < (mp_limb_t)1)) { + if (__gmp_src != __gmp_dst) { + while (1) { + { mp_size_t __gmp_j; __gmp_j = __gmp_i; + while (__gmp_j < __gmp_size) { + *(__gmp_dst + __gmp_j) = *(__gmp_src + __gmp_j); + __gmp_j += (mp_size_t)1; + } + } + + break; + } + } + __gmp_c = (unsigned long)0; + break; + } + } + } + else { + if (__gmp_src != __gmp_dst) { + while (1) { + { mp_size_t __gmp_j_0; __gmp_j_0 = (long)1; + while (__gmp_j_0 < __gmp_size) { + *(__gmp_dst + __gmp_j_0) = *(__gmp_src + __gmp_j_0); + __gmp_j_0 += (mp_size_t)1; + } + } + + break; + } + } + __gmp_c = (unsigned long)0; + } + } + + break; + } + return (__gmp_c); +} + +__inline static mp_limb_t __gmpn_neg_n(mp_ptr __gmp_rp, mp_srcptr __gmp_up, + mp_size_t __gmp_n) +{ + mp_limb_t __gmp_ul; + mp_limb_t __gmp_cy; + __gmp_cy = (unsigned long)0; + while (1) { + { mp_srcptr tmp; mp_ptr tmp_0; + { /*undefined sequence*/ tmp = __gmp_up; __gmp_up ++; __gmp_ul = *tmp; + } + { /*undefined sequence*/ + tmp_0 = __gmp_rp; + __gmp_rp ++; + *tmp_0 = - __gmp_ul - __gmp_cy; + } __gmp_cy |= (unsigned long)(__gmp_ul != (mp_limb_t)0); + } + + __gmp_n -= (mp_size_t)1; + if (! (__gmp_n != (mp_size_t)0)) { break; } + } + return (__gmp_cy); +} + +/*@ terminates \false; + ensures \false; + assigns \nothing; */ +extern void exit(int status); +void e_acsl_fail(char *msg) +{ + printf((char const *)"%s\n",msg); + exit(1); + return; +} + +int main(void) +{ + int __retres; + int x; + int t[3]; + int *p; + x = 1; + t[0] = 2; + t[1] = 3; + t[2] = 4; + p = & x; + /*@ assert *p ≡ 1; */ ; + { mpz_t e_acsl_1; mpz_t e_acsl_2; int e_acsl_3; + __gmpz_init_set_si((__mpz_struct *)(e_acsl_1),(long)*p); + __gmpz_init_set_si((__mpz_struct *)(e_acsl_2),(long)1); + e_acsl_3 = __gmpz_cmp((__mpz_struct const *)(e_acsl_1), + (__mpz_struct const *)(e_acsl_2)); + if (! (e_acsl_3 == 0)) { e_acsl_fail((char *)"(*p == 1)"); } + __gmpz_clear((__mpz_struct *)(e_acsl_1)); + __gmpz_clear((__mpz_struct *)(e_acsl_2)); + } + + /*@ assert t[0] ≡ 2; */ ; + { mpz_t e_acsl_4; mpz_t e_acsl_5; int e_acsl_6; + __gmpz_init_set_si((__mpz_struct *)(e_acsl_4),(long)t[0]); + __gmpz_init_set_si((__mpz_struct *)(e_acsl_5),(long)2); + e_acsl_6 = __gmpz_cmp((__mpz_struct const *)(e_acsl_4), + (__mpz_struct const *)(e_acsl_5)); + if (! (e_acsl_6 == 0)) { e_acsl_fail((char *)"(t[0] == 2)"); } + __gmpz_clear((__mpz_struct *)(e_acsl_4)); + __gmpz_clear((__mpz_struct *)(e_acsl_5)); + } + + /*@ assert t[2] ≡ 4; */ ; + { mpz_t e_acsl_7; long e_acsl_8; mpz_t e_acsl_9; mpz_t e_acsl_10; + int e_acsl_11; __gmpz_init_set_si((__mpz_struct *)(e_acsl_7),(long)2); + e_acsl_8 = __gmpz_get_si((__mpz_struct const *)(e_acsl_7)); + __gmpz_init_set_si((__mpz_struct *)(e_acsl_9),(long)t[(int)e_acsl_8]); + __gmpz_init_set_si((__mpz_struct *)(e_acsl_10),(long)4); + e_acsl_11 = __gmpz_cmp((__mpz_struct const *)(e_acsl_9), + (__mpz_struct const *)(e_acsl_10)); + if (! (e_acsl_11 == 0)) { e_acsl_fail((char *)"(t[2] == 4)"); } + __gmpz_clear((__mpz_struct *)(e_acsl_7)); + __gmpz_clear((__mpz_struct *)(e_acsl_9)); + __gmpz_clear((__mpz_struct *)(e_acsl_10)); + } + + { int i; i = 0; + while (1) { + if (! (i < 2)) { break; } + /*@ assert t[i] ≡ i+2; */ ; + { mpz_t e_acsl_12; mpz_t e_acsl_13; mpz_t e_acsl_14; mpz_t e_acsl_15; + int e_acsl_16; + __gmpz_init_set_si((__mpz_struct *)(e_acsl_12),(long)t[i]); + __gmpz_init_set_si((__mpz_struct *)(e_acsl_13),(long)i); + __gmpz_init_set_si((__mpz_struct *)(e_acsl_14),(long)2); + __gmpz_init((__mpz_struct *)(e_acsl_15)); + __gmpz_add((__mpz_struct *)(e_acsl_15), + (__mpz_struct const *)(e_acsl_13), + (__mpz_struct const *)(e_acsl_14)); + e_acsl_16 = __gmpz_cmp((__mpz_struct const *)(e_acsl_12), + (__mpz_struct const *)(e_acsl_15)); + if (! (e_acsl_16 == 0)) { e_acsl_fail((char *)"(t[i] == i+2)"); } + __gmpz_clear((__mpz_struct *)(e_acsl_12)); + __gmpz_clear((__mpz_struct *)(e_acsl_13)); + __gmpz_clear((__mpz_struct *)(e_acsl_14)); + __gmpz_clear((__mpz_struct *)(e_acsl_15)); + } + + /*@ assert t[2-i] ≡ 4-i; */ ; + { mpz_t e_acsl_17; mpz_t e_acsl_18; mpz_t e_acsl_19; long e_acsl_20; + mpz_t e_acsl_21; mpz_t e_acsl_22; mpz_t e_acsl_23; mpz_t e_acsl_24; + int e_acsl_25; + __gmpz_init_set_si((__mpz_struct *)(e_acsl_17),(long)2); + __gmpz_init_set_si((__mpz_struct *)(e_acsl_18),(long)i); + __gmpz_init((__mpz_struct *)(e_acsl_19)); + __gmpz_sub((__mpz_struct *)(e_acsl_19), + (__mpz_struct const *)(e_acsl_17), + (__mpz_struct const *)(e_acsl_18)); + e_acsl_20 = __gmpz_get_si((__mpz_struct const *)(e_acsl_19)); + __gmpz_init_set_si((__mpz_struct *)(e_acsl_21), + (long)t[(int)e_acsl_20]); + __gmpz_init_set_si((__mpz_struct *)(e_acsl_22),(long)4); + __gmpz_init_set_si((__mpz_struct *)(e_acsl_23),(long)i); + __gmpz_init((__mpz_struct *)(e_acsl_24)); + __gmpz_sub((__mpz_struct *)(e_acsl_24), + (__mpz_struct const *)(e_acsl_22), + (__mpz_struct const *)(e_acsl_23)); + e_acsl_25 = __gmpz_cmp((__mpz_struct const *)(e_acsl_21), + (__mpz_struct const *)(e_acsl_24)); + if (! (e_acsl_25 == 0)) { e_acsl_fail((char *)"(t[2-i] == 4-i)"); } + __gmpz_clear((__mpz_struct *)(e_acsl_17)); + __gmpz_clear((__mpz_struct *)(e_acsl_18)); + __gmpz_clear((__mpz_struct *)(e_acsl_19)); + __gmpz_clear((__mpz_struct *)(e_acsl_21)); + __gmpz_clear((__mpz_struct *)(e_acsl_22)); + __gmpz_clear((__mpz_struct *)(e_acsl_23)); + __gmpz_clear((__mpz_struct *)(e_acsl_24)); + } + + /*@ assert *(&t[2]-i) ≡ 4-i; */ ; + { mpz_t e_acsl_26; long e_acsl_27; mpz_t e_acsl_28; long e_acsl_29; + mpz_t e_acsl_30; mpz_t e_acsl_31; mpz_t e_acsl_32; mpz_t e_acsl_33; + int e_acsl_34; + __gmpz_init_set_si((__mpz_struct *)(e_acsl_26),(long)2); + e_acsl_27 = __gmpz_get_si((__mpz_struct const *)(e_acsl_26)); + __gmpz_init_set_si((__mpz_struct *)(e_acsl_28),(long)i); + e_acsl_29 = __gmpz_get_si((__mpz_struct const *)(e_acsl_28)); + __gmpz_init_set_si((__mpz_struct *)(e_acsl_30), + (long)*(& t[(int)e_acsl_27] - (int)e_acsl_29)); + __gmpz_init_set_si((__mpz_struct *)(e_acsl_31),(long)4); + __gmpz_init_set_si((__mpz_struct *)(e_acsl_32),(long)i); + __gmpz_init((__mpz_struct *)(e_acsl_33)); + __gmpz_sub((__mpz_struct *)(e_acsl_33), + (__mpz_struct const *)(e_acsl_31), + (__mpz_struct const *)(e_acsl_32)); + e_acsl_34 = __gmpz_cmp((__mpz_struct const *)(e_acsl_30), + (__mpz_struct const *)(e_acsl_33)); + if (! (e_acsl_34 == 0)) { e_acsl_fail((char *)"(*(&t[2]-i) == 4-i)"); + } __gmpz_clear((__mpz_struct *)(e_acsl_26)); + __gmpz_clear((__mpz_struct *)(e_acsl_28)); + __gmpz_clear((__mpz_struct *)(e_acsl_30)); + __gmpz_clear((__mpz_struct *)(e_acsl_31)); + __gmpz_clear((__mpz_struct *)(e_acsl_32)); + __gmpz_clear((__mpz_struct *)(e_acsl_33)); + } + + i ++; + } + } + + p = & t[2]; + t[2] = 5; + /*@ assert *p ≡ 5; */ ; + { mpz_t e_acsl_35; mpz_t e_acsl_36; int e_acsl_37; + __gmpz_init_set_si((__mpz_struct *)(e_acsl_35),(long)*p); + __gmpz_init_set_si((__mpz_struct *)(e_acsl_36),(long)5); + e_acsl_37 = __gmpz_cmp((__mpz_struct const *)(e_acsl_35), + (__mpz_struct const *)(e_acsl_36)); + if (! (e_acsl_37 == 0)) { e_acsl_fail((char *)"(*p == 5)"); } + __gmpz_clear((__mpz_struct *)(e_acsl_35)); + __gmpz_clear((__mpz_struct *)(e_acsl_36)); + } + + __retres = 0; + return (__retres); +} + + diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_sizeof.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_sizeof.c index 91e233f19d9..cdaa71c7f3a 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_sizeof.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_sizeof.c @@ -30,7 +30,7 @@ __inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__(( __pure__)); __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__(( __pure__)); -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__(( +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( __pure__)); __inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z, mp_size_t __gmp_n) __attribute__(( @@ -153,16 +153,18 @@ __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) return (__retres); } -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__(( +/*@ requires \valid(z); + assigns \nothing; */ +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( __pure__)); -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) { mp_ptr __gmp_p; mp_size_t __gmp_n; mp_limb_t __gmp_l; mp_limb_t tmp; - __gmp_p = __gmp_z->_mp_d; - __gmp_n = (long)__gmp_z->_mp_size; + __gmp_p = z->_mp_d; + __gmp_n = (long)z->_mp_size; __gmp_l = *(__gmp_p + 0); if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; } else { tmp = (unsigned long)0; } diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_stmt_contract.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_stmt_contract.c index 9141713a57c..20093f2ad7f 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_stmt_contract.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_stmt_contract.c @@ -48,7 +48,7 @@ __inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__(( __pure__)); __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__(( __pure__)); -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__(( +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( __pure__)); __inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z, mp_size_t __gmp_n) __attribute__(( @@ -177,16 +177,18 @@ __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) return (__retres); } -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__(( +/*@ requires \valid(z); + assigns \nothing; */ +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( __pure__)); -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) { mp_ptr __gmp_p; mp_size_t __gmp_n; mp_limb_t __gmp_l; mp_limb_t tmp; - __gmp_p = __gmp_z->_mp_d; - __gmp_n = (long)__gmp_z->_mp_size; + __gmp_p = z->_mp_d; + __gmp_n = (long)z->_mp_size; __gmp_l = *(__gmp_p + 0); if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; } else { tmp = (unsigned long)0; } diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_true.c b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_true.c index e65624f378f..a2a819c9663 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_true.c +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/gen_true.c @@ -30,7 +30,7 @@ __inline static int __gmpz_fits_ulong_p(mpz_srcptr __gmp_z) __attribute__(( __pure__)); __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) __attribute__(( __pure__)); -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__(( +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( __pure__)); __inline static mp_limb_t __gmpz_getlimbn(mpz_srcptr __gmp_z, mp_size_t __gmp_n) __attribute__(( @@ -153,16 +153,18 @@ __inline static int __gmpz_fits_ushort_p(mpz_srcptr __gmp_z) return (__retres); } -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) __attribute__(( +/*@ requires \valid(z); + assigns \nothing; */ +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) __attribute__(( __pure__)); -__inline static unsigned long __gmpz_get_ui(mpz_srcptr __gmp_z) +__inline static unsigned long __gmpz_get_ui(__mpz_struct const * /*[1]*/ z) { mp_ptr __gmp_p; mp_size_t __gmp_n; mp_limb_t __gmp_l; mp_limb_t tmp; - __gmp_p = __gmp_z->_mp_d; - __gmp_n = (long)__gmp_z->_mp_size; + __gmp_p = z->_mp_d; + __gmp_n = (long)z->_mp_size; __gmp_l = *(__gmp_p + 0); if (__gmp_n != (mp_size_t)0) { tmp = __gmp_l; } else { tmp = (unsigned long)0; } diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/integer_constant.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/integer_constant.res.oracle index 7c32de6c332..7ac5075dd95 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/integer_constant.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/integer_constant.res.oracle @@ -2,89 +2,89 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:121:[value] Assertion got status valid. +PROJECT_FILE.i:131:[value] Assertion got status valid. [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:123. + Called from PROJECT_FILE.i:133. PROJECT_FILE.i:29:[value] Function mpz_init_set_si: postcondition got status unknown [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:123. + Called from PROJECT_FILE.i:133. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:124. + Called from PROJECT_FILE.i:134. PROJECT_FILE.i:45:[value] Function mpz_cmp: precondition got status valid PROJECT_FILE.i:46:[value] Function mpz_cmp: precondition got status valid [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:125. + Called from PROJECT_FILE.i:135. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. -PROJECT_FILE.i:105:[value] Function exit: postcondition got status invalid + Called from PROJECT_FILE.i:125. +PROJECT_FILE.i:115:[value] Function exit: postcondition got status invalid [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:126. + Called from PROJECT_FILE.i:136. PROJECT_FILE.i:39:[value] Function mpz_clear: precondition got status valid [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:126. + Called from PROJECT_FILE.i:136. [value] Done for function mpz_clear -PROJECT_FILE.i:130:[value] Assertion got status valid. +PROJECT_FILE.i:140:[value] Assertion got status valid. [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:132. + Called from PROJECT_FILE.i:142. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:132. + Called from PROJECT_FILE.i:142. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:133. + Called from PROJECT_FILE.i:143. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:134. + Called from PROJECT_FILE.i:144. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:135. + Called from PROJECT_FILE.i:145. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:135. + Called from PROJECT_FILE.i:145. [value] Done for function mpz_clear -PROJECT_FILE.i:138:[value] Assertion got status valid. +PROJECT_FILE.i:148:[value] Assertion got status valid. [value] computing for function mpz_init_set_str <- main. - Called from PROJECT_FILE.i:140. + Called from PROJECT_FILE.i:150. PROJECT_FILE.i:33:[value] Function mpz_init_set_str: postcondition got status unknown [value] Done for function mpz_init_set_str [value] computing for function mpz_init_set_str <- main. - Called from PROJECT_FILE.i:141. + Called from PROJECT_FILE.i:151. [value] Done for function mpz_init_set_str [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:142. + Called from PROJECT_FILE.i:152. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:144. + Called from PROJECT_FILE.i:154. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:145. + Called from PROJECT_FILE.i:155. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:145. + Called from PROJECT_FILE.i:155. [value] Done for function mpz_clear [value] Recording results for main [value] done for function main @@ -95,10 +95,10 @@ PROJECT_FILE.i:33:[value] Function mpz_init_set_str: postcondition got status un [from] Computing for function e_acsl_fail [from] Computing for function printf <-e_acsl_fail [from] Done for function printf -PROJECT_FILE.i:115:[from] warning: variadic call detected. Using only 1 argument(s). +PROJECT_FILE.i:125:[from] warning: variadic call detected. Using only 1 argument(s). [from] Computing for function exit <-e_acsl_fail [from] Done for function exit -PROJECT_FILE.i:115:[from] Non terminating function (no dependencies) +PROJECT_FILE.i:125:[from] Non terminating function (no dependencies) [from] Done for function e_acsl_fail [from] Computing for function mpz_clear [from] Done for function mpz_clear diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/lazy.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/lazy.res.oracle index 2ec30eb619b..80ddfc0f77a 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/lazy.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/lazy.res.oracle @@ -2,250 +2,250 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:124:[value] Assertion got status valid. +PROJECT_FILE.i:134:[value] Assertion got status valid. [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:126. + Called from PROJECT_FILE.i:136. PROJECT_FILE.i:29:[value] Function mpz_init_set_si: postcondition got status unknown [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:127. + Called from PROJECT_FILE.i:137. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:127. + Called from PROJECT_FILE.i:137. PROJECT_FILE.i:45:[value] Function mpz_cmp: precondition got status valid PROJECT_FILE.i:46:[value] Function mpz_cmp: precondition got status valid [value] Done for function mpz_cmp [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:132. + Called from PROJECT_FILE.i:142. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:133. + Called from PROJECT_FILE.i:143. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:134. + Called from PROJECT_FILE.i:144. [value] Done for function mpz_cmp -PROJECT_FILE.i:135:[value] assigning non deterministic value for the first time +PROJECT_FILE.i:145:[value] assigning non deterministic value for the first time [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:136. + Called from PROJECT_FILE.i:146. PROJECT_FILE.i:39:[value] Function mpz_clear: precondition got status valid [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:137. + Called from PROJECT_FILE.i:147. [value] Done for function mpz_clear [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:139. + Called from PROJECT_FILE.i:149. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. -PROJECT_FILE.i:105:[value] Function exit: postcondition got status invalid + Called from PROJECT_FILE.i:125. +PROJECT_FILE.i:115:[value] Function exit: postcondition got status invalid [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:140. + Called from PROJECT_FILE.i:150. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:140. + Called from PROJECT_FILE.i:150. [value] Done for function mpz_clear -PROJECT_FILE.i:143:[value] Assertion got status valid. +PROJECT_FILE.i:153:[value] Assertion got status valid. [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:147. + Called from PROJECT_FILE.i:157. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:147. + Called from PROJECT_FILE.i:157. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:148. + Called from PROJECT_FILE.i:158. [value] Done for function mpz_cmp [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:158. + Called from PROJECT_FILE.i:168. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:159. + Called from PROJECT_FILE.i:169. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:160. + Called from PROJECT_FILE.i:170. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:161. + Called from PROJECT_FILE.i:171. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_ui <- main. - Called from PROJECT_FILE.i:162. + Called from PROJECT_FILE.i:172. PROJECT_FILE.i:25:[value] Function mpz_init_set_ui: postcondition got status unknown [value] Done for function mpz_init_set_ui [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:163. + Called from PROJECT_FILE.i:173. [value] Done for function mpz_cmp [value] computing for function mpz_init <- main. - Called from PROJECT_FILE.i:164. + Called from PROJECT_FILE.i:174. PROJECT_FILE.i:21:[value] Function mpz_init: postcondition got status unknown [value] Done for function mpz_init -PROJECT_FILE.i:165:[value] Assertion got status invalid (stopping propagation).. +PROJECT_FILE.i:175:[value] Assertion got status invalid (stopping propagation).. [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:178. + Called from PROJECT_FILE.i:188. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:178. + Called from PROJECT_FILE.i:188. [value] Done for function mpz_clear -PROJECT_FILE.i:181:[value] Assertion got status valid. +PROJECT_FILE.i:191:[value] Assertion got status valid. [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:183. + Called from PROJECT_FILE.i:193. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:184. + Called from PROJECT_FILE.i:194. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:184. + Called from PROJECT_FILE.i:194. [value] Done for function mpz_cmp [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:190. + Called from PROJECT_FILE.i:200. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:191. + Called from PROJECT_FILE.i:201. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:192. + Called from PROJECT_FILE.i:202. [value] Done for function mpz_cmp [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:194. + Called from PROJECT_FILE.i:204. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:195. + Called from PROJECT_FILE.i:205. [value] Done for function mpz_clear [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:196. + Called from PROJECT_FILE.i:206. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:197. + Called from PROJECT_FILE.i:207. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:197. + Called from PROJECT_FILE.i:207. [value] Done for function mpz_clear -PROJECT_FILE.i:200:[value] Assertion got status valid. +PROJECT_FILE.i:210:[value] Assertion got status valid. [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:204. + Called from PROJECT_FILE.i:214. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:204. + Called from PROJECT_FILE.i:214. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:205. + Called from PROJECT_FILE.i:215. [value] Done for function mpz_cmp [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:216. + Called from PROJECT_FILE.i:226. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:217. + Called from PROJECT_FILE.i:227. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:218. + Called from PROJECT_FILE.i:228. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:219. + Called from PROJECT_FILE.i:229. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_ui <- main. - Called from PROJECT_FILE.i:220. + Called from PROJECT_FILE.i:230. [value] Done for function mpz_init_set_ui [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:221. + Called from PROJECT_FILE.i:231. [value] Done for function mpz_cmp [value] computing for function mpz_init <- main. - Called from PROJECT_FILE.i:222. + Called from PROJECT_FILE.i:232. [value] Done for function mpz_init -PROJECT_FILE.i:223:[value] Assertion got status invalid (stopping propagation).. +PROJECT_FILE.i:233:[value] Assertion got status invalid (stopping propagation).. [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:235. + Called from PROJECT_FILE.i:245. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:235. + Called from PROJECT_FILE.i:245. [value] Done for function mpz_clear -PROJECT_FILE.i:238:[value] Assertion got status valid. +PROJECT_FILE.i:248:[value] Assertion got status valid. [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:240. + Called from PROJECT_FILE.i:250. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:241. + Called from PROJECT_FILE.i:251. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:241. + Called from PROJECT_FILE.i:251. [value] Done for function mpz_cmp [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:247. + Called from PROJECT_FILE.i:257. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:248. + Called from PROJECT_FILE.i:258. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:249. + Called from PROJECT_FILE.i:259. [value] Done for function mpz_cmp [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:251. + Called from PROJECT_FILE.i:261. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:252. + Called from PROJECT_FILE.i:262. [value] Done for function mpz_clear [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:253. + Called from PROJECT_FILE.i:263. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:254. + Called from PROJECT_FILE.i:264. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:254. + Called from PROJECT_FILE.i:264. [value] Done for function mpz_clear -PROJECT_FILE.i:257:[value] Assertion got status valid. +PROJECT_FILE.i:267:[value] Assertion got status valid. [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:261. + Called from PROJECT_FILE.i:271. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:261. + Called from PROJECT_FILE.i:271. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:262. + Called from PROJECT_FILE.i:272. [value] Done for function mpz_cmp [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:273. + Called from PROJECT_FILE.i:283. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:274. + Called from PROJECT_FILE.i:284. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:275. + Called from PROJECT_FILE.i:285. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:276. + Called from PROJECT_FILE.i:286. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_ui <- main. - Called from PROJECT_FILE.i:277. + Called from PROJECT_FILE.i:287. [value] Done for function mpz_init_set_ui [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:278. + Called from PROJECT_FILE.i:288. [value] Done for function mpz_cmp [value] computing for function mpz_init <- main. - Called from PROJECT_FILE.i:279. + Called from PROJECT_FILE.i:289. [value] Done for function mpz_init -PROJECT_FILE.i:280:[value] Assertion got status invalid (stopping propagation).. +PROJECT_FILE.i:290:[value] Assertion got status invalid (stopping propagation).. [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:292. + Called from PROJECT_FILE.i:302. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:292. + Called from PROJECT_FILE.i:302. [value] Done for function mpz_clear [value] Recording results for main [value] done for function main @@ -258,10 +258,10 @@ PROJECT_FILE.i:280:[value] Assertion got status invalid (stopping propagation).. [from] Computing for function e_acsl_fail [from] Computing for function printf <-e_acsl_fail [from] Done for function printf -PROJECT_FILE.i:115:[from] warning: variadic call detected. Using only 1 argument(s). +PROJECT_FILE.i:125:[from] warning: variadic call detected. Using only 1 argument(s). [from] Computing for function exit <-e_acsl_fail [from] Done for function exit -PROJECT_FILE.i:115:[from] Non terminating function (no dependencies) +PROJECT_FILE.i:125:[from] Non terminating function (no dependencies) [from] Done for function e_acsl_fail [from] Computing for function mpz_init_set_ui [from] Done for function mpz_init_set_ui diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/nested_code_annot.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/nested_code_annot.res.oracle index 18513fdc127..ab2a39e9d57 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/nested_code_annot.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/nested_code_annot.res.oracle @@ -3,161 +3,161 @@ tests/e-acsl-runtime/nested_code_annot.i:12:[kernel] warning: Body of function m [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:124:[value] Assertion got status valid. +PROJECT_FILE.i:134:[value] Assertion got status valid. [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:131. + Called from PROJECT_FILE.i:141. PROJECT_FILE.i:29:[value] Function mpz_init_set_si: postcondition got status unknown [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:131. + Called from PROJECT_FILE.i:141. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:132. + Called from PROJECT_FILE.i:142. PROJECT_FILE.i:45:[value] Function mpz_cmp: precondition got status valid PROJECT_FILE.i:46:[value] Function mpz_cmp: precondition got status valid [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:133. + Called from PROJECT_FILE.i:143. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. -PROJECT_FILE.i:105:[value] Function exit: postcondition got status invalid + Called from PROJECT_FILE.i:125. +PROJECT_FILE.i:115:[value] Function exit: postcondition got status invalid [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:134. + Called from PROJECT_FILE.i:144. PROJECT_FILE.i:39:[value] Function mpz_clear: precondition got status valid [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:134. + Called from PROJECT_FILE.i:144. [value] Done for function mpz_clear [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:143. + Called from PROJECT_FILE.i:153. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:143. + Called from PROJECT_FILE.i:153. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:144. + Called from PROJECT_FILE.i:154. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:145. + Called from PROJECT_FILE.i:155. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:146. + Called from PROJECT_FILE.i:156. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:146. + Called from PROJECT_FILE.i:156. [value] Done for function mpz_clear [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:150. + Called from PROJECT_FILE.i:160. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:150. + Called from PROJECT_FILE.i:160. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:151. + Called from PROJECT_FILE.i:161. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:152. + Called from PROJECT_FILE.i:162. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:153. + Called from PROJECT_FILE.i:163. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:153. + Called from PROJECT_FILE.i:163. [value] Done for function mpz_clear [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:162. + Called from PROJECT_FILE.i:172. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:162. + Called from PROJECT_FILE.i:172. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:163. + Called from PROJECT_FILE.i:173. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:164. + Called from PROJECT_FILE.i:174. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:165. + Called from PROJECT_FILE.i:175. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:165. + Called from PROJECT_FILE.i:175. [value] Done for function mpz_clear [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:169. + Called from PROJECT_FILE.i:179. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:169. + Called from PROJECT_FILE.i:179. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:170. + Called from PROJECT_FILE.i:180. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:171. + Called from PROJECT_FILE.i:181. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:172. + Called from PROJECT_FILE.i:182. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:172. + Called from PROJECT_FILE.i:182. [value] Done for function mpz_clear [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:181. + Called from PROJECT_FILE.i:191. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:181. + Called from PROJECT_FILE.i:191. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:182. + Called from PROJECT_FILE.i:192. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:183. + Called from PROJECT_FILE.i:193. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:184. + Called from PROJECT_FILE.i:194. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:184. + Called from PROJECT_FILE.i:194. [value] Done for function mpz_clear [value] Recording results for main [value] done for function main @@ -168,10 +168,10 @@ PROJECT_FILE.i:39:[value] Function mpz_clear: precondition got status valid [from] Computing for function e_acsl_fail [from] Computing for function printf <-e_acsl_fail [from] Done for function printf -PROJECT_FILE.i:115:[from] warning: variadic call detected. Using only 1 argument(s). +PROJECT_FILE.i:125:[from] warning: variadic call detected. Using only 1 argument(s). [from] Computing for function exit <-e_acsl_fail [from] Done for function exit -PROJECT_FILE.i:115:[from] Non terminating function (no dependencies) +PROJECT_FILE.i:125:[from] Non terminating function (no dependencies) [from] Done for function e_acsl_fail [from] Computing for function mpz_clear [from] Done for function mpz_clear diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/not.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/not.res.oracle index eb0e616ce0c..7aa2ea581ca 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/not.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/not.res.oracle @@ -2,7 +2,7 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:122:[value] Assertion got status valid. +PROJECT_FILE.i:132:[value] Assertion got status valid. [value] Recording results for main [value] done for function main [value] ====== VALUES COMPUTED ====== diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/null.err.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/null.err.oracle new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/null.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/null.res.oracle new file mode 100644 index 00000000000..bbd528ab7b0 --- /dev/null +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/null.res.oracle @@ -0,0 +1,96 @@ +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value] Values of globals at initialization +PROJECT_FILE.i:130:[value] Assertion got status unknown. +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:131. +PROJECT_FILE.i:29:[value] Function mpz_init_set_si: postcondition got status unknown +[value] Done for function mpz_init_set_si +[value] computing for function mpz_get_ui <- main. + Called from PROJECT_FILE.i:132. +PROJECT_FILE.i:96:[value] Function mpz_get_ui: precondition got status valid +[value] Done for function mpz_get_ui +[value] computing for function e_acsl_fail <- main. + Called from PROJECT_FILE.i:134. +[value] computing for function printf <- e_acsl_fail <- main. + Called from PROJECT_FILE.i:125. +[value] Done for function printf +[value] computing for function exit <- e_acsl_fail <- main. + Called from PROJECT_FILE.i:125. +PROJECT_FILE.i:115:[value] Function exit: postcondition got status invalid +[value] Done for function exit +[value] Recording results for e_acsl_fail +[value] Done for function e_acsl_fail +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:135. +PROJECT_FILE.i:39:[value] Function mpz_clear: precondition got status valid +[value] Done for function mpz_clear +[value] Recording results for main +[value] done for function main +[from] Computing for function mpz_init_set_si +[from] Done for function mpz_init_set_si +[from] Computing for function mpz_get_ui +[from] Done for function mpz_get_ui +[from] Computing for function e_acsl_fail +[from] Computing for function printf <-e_acsl_fail +[from] Done for function printf +PROJECT_FILE.i:125:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Computing for function exit <-e_acsl_fail +[from] Done for function exit +PROJECT_FILE.i:125:[from] Non terminating function (no dependencies) +[from] Done for function e_acsl_fail +[from] Computing for function mpz_clear +[from] Done for function mpz_clear +[value] ====== VALUES COMPUTED ====== +[value] Values for function e_acsl_fail: + NON TERMINATING FUNCTION +[value] Values for function main: + __retres ∈ {0} +/* Generated by Frama-C */ +struct __anonstruct___mpz_struct_1 { + int _mp_alloc ; + int _mp_size ; + unsigned long *_mp_d ; +}; +typedef struct __anonstruct___mpz_struct_1 __mpz_struct; +typedef __mpz_struct mpz_t[1]; +/*@ ensures \valid(\old(z)); + assigns *z; */ +extern void mpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); +/*@ requires \valid(x); + assigns *x; */ +extern void mpz_clear(__mpz_struct * /*[1]*/ x); +/*@ requires \valid(z); + assigns \nothing; */ +extern unsigned long mpz_get_ui(__mpz_struct const * /*[1]*/ z); +/*@ terminates \false; + ensures \false; + assigns \nothing; */ +extern void exit(int status); +/*@ assigns \nothing; */ +extern int printf(char const * , ...); +void e_acsl_fail(char *msg) +{ + printf("%s\n",msg); + exit(1); + return; +} + +int main(void) +{ + int __retres; + /*@ assert \null ≡ (void *)0; */ ; + { mpz_t e_acsl_1; unsigned long e_acsl_2; + mpz_init_set_si((__mpz_struct *)(e_acsl_1),(long)0); + e_acsl_2 = mpz_get_ui((__mpz_struct const *)(e_acsl_1)); + if (! ((void *)0 == (void *)e_acsl_2)) { + e_acsl_fail((char *)"(\\null == (void *)0)"); + } mpz_clear((__mpz_struct *)(e_acsl_1)); + } + + __retres = 0; + return (__retres); +} + + diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/other_constants.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/other_constants.res.oracle index f0a4498c942..f4920b64072 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/other_constants.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/other_constants.res.oracle @@ -2,39 +2,39 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:124:[value] Assertion got status valid. -PROJECT_FILE.i:127:[value] Assertion got status valid. +PROJECT_FILE.i:134:[value] Assertion got status valid. +PROJECT_FILE.i:137:[value] Assertion got status valid. [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:129. + Called from PROJECT_FILE.i:139. PROJECT_FILE.i:29:[value] Function mpz_init_set_si: postcondition got status unknown [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:129. + Called from PROJECT_FILE.i:139. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:130. + Called from PROJECT_FILE.i:140. PROJECT_FILE.i:45:[value] Function mpz_cmp: precondition got status valid PROJECT_FILE.i:46:[value] Function mpz_cmp: precondition got status valid [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:131. + Called from PROJECT_FILE.i:141. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. -PROJECT_FILE.i:105:[value] Function exit: postcondition got status invalid + Called from PROJECT_FILE.i:125. +PROJECT_FILE.i:115:[value] Function exit: postcondition got status invalid [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:132. + Called from PROJECT_FILE.i:142. PROJECT_FILE.i:39:[value] Function mpz_clear: precondition got status valid [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:132. + Called from PROJECT_FILE.i:142. [value] Done for function mpz_clear -PROJECT_FILE.i:135:[value] Assertion got status valid. +PROJECT_FILE.i:145:[value] Assertion got status valid. [value] Recording results for main [value] done for function main [from] Computing for function mpz_init_set_si @@ -44,10 +44,10 @@ PROJECT_FILE.i:135:[value] Assertion got status valid. [from] Computing for function e_acsl_fail [from] Computing for function printf <-e_acsl_fail [from] Done for function printf -PROJECT_FILE.i:115:[from] warning: variadic call detected. Using only 1 argument(s). +PROJECT_FILE.i:125:[from] warning: variadic call detected. Using only 1 argument(s). [from] Computing for function exit <-e_acsl_fail [from] Done for function exit -PROJECT_FILE.i:115:[from] Non terminating function (no dependencies) +PROJECT_FILE.i:125:[from] Non terminating function (no dependencies) [from] Done for function e_acsl_fail [from] Computing for function mpz_clear [from] Done for function mpz_clear diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ptr.err.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ptr.err.oracle new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ptr.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ptr.res.oracle new file mode 100644 index 00000000000..81bc57d7fbe --- /dev/null +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/ptr.res.oracle @@ -0,0 +1,720 @@ +:0:[e-acsl] warning: missing guard for ensuring that p is a valid memory access +:0:[e-acsl] warning: missing guard for ensuring that 0 is a valid array index +:0:[e-acsl] warning: missing guard for ensuring that 2 is a valid array index +:0:[e-acsl] warning: missing guard for ensuring that i is a valid array index +:0:[e-acsl] warning: missing guard for ensuring that 2-i is a valid array index +:0:[e-acsl] warning: missing guard for ensuring that &t[2]-i is a valid pointer +:0:[e-acsl] warning: missing guard for ensuring that &t[2]-i is a valid memory access +[value] Analyzing a complete application starting at main +[value] Computing initial state +[value] Initial state computed +[value] Values of globals at initialization +PROJECT_FILE.i:138:[value] Assertion got status valid. +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:140. +PROJECT_FILE.i:29:[value] Function mpz_init_set_si: postcondition got status unknown +[value] Done for function mpz_init_set_si +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:140. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_cmp <- main. + Called from PROJECT_FILE.i:141. +PROJECT_FILE.i:45:[value] Function mpz_cmp: precondition got status valid +PROJECT_FILE.i:46:[value] Function mpz_cmp: precondition got status valid +[value] Done for function mpz_cmp +[value] computing for function e_acsl_fail <- main. + Called from PROJECT_FILE.i:142. +[value] computing for function printf <- e_acsl_fail <- main. + Called from PROJECT_FILE.i:125. +[value] Done for function printf +[value] computing for function exit <- e_acsl_fail <- main. + Called from PROJECT_FILE.i:125. +PROJECT_FILE.i:115:[value] Function exit: postcondition got status invalid +[value] Done for function exit +[value] Recording results for e_acsl_fail +[value] Done for function e_acsl_fail +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:143. +PROJECT_FILE.i:39:[value] Function mpz_clear: precondition got status valid +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:143. +[value] Done for function mpz_clear +PROJECT_FILE.i:146:[value] Assertion got status valid. +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:148. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:148. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_cmp <- main. + Called from PROJECT_FILE.i:149. +[value] Done for function mpz_cmp +[value] computing for function e_acsl_fail <- main. + Called from PROJECT_FILE.i:150. +[value] computing for function printf <- e_acsl_fail <- main. + Called from PROJECT_FILE.i:125. +[value] Done for function printf +[value] computing for function exit <- e_acsl_fail <- main. + Called from PROJECT_FILE.i:125. +[value] Done for function exit +[value] Recording results for e_acsl_fail +[value] Done for function e_acsl_fail +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:151. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:151. +[value] Done for function mpz_clear +PROJECT_FILE.i:154:[value] Assertion got status valid. +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:156. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_get_si <- main. + Called from PROJECT_FILE.i:157. +PROJECT_FILE.i:92:[value] Function mpz_get_si: precondition got status valid +[value] Done for function mpz_get_si +PROJECT_FILE.i:158:[kernel] warning: accessing out of bounds index [-2147483648..2147483647]. + assert 0 ≤ (int)e_acsl_8 ∧ (int)e_acsl_8 < 3; +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:158. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:158. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_cmp <- main. + Called from PROJECT_FILE.i:159. +[value] Done for function mpz_cmp +[value] computing for function e_acsl_fail <- main. + Called from PROJECT_FILE.i:160. +[value] computing for function printf <- e_acsl_fail <- main. + Called from PROJECT_FILE.i:125. +[value] Done for function printf +[value] computing for function exit <- e_acsl_fail <- main. + Called from PROJECT_FILE.i:125. +[value] Done for function exit +[value] Recording results for e_acsl_fail +[value] Done for function e_acsl_fail +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:161. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:161. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:161. +[value] Done for function mpz_clear +PROJECT_FILE.i:165:[value] entering loop for the first time +PROJECT_FILE.i:167:[value] Assertion got status valid. +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:169. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:170. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:170. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_init <- main. + Called from PROJECT_FILE.i:171. +PROJECT_FILE.i:21:[value] Function mpz_init: postcondition got status unknown +[value] Done for function mpz_init +[value] computing for function mpz_add <- main. + Called from PROJECT_FILE.i:171. +PROJECT_FILE.i:60:[value] Function mpz_add: precondition got status valid +PROJECT_FILE.i:61:[value] Function mpz_add: precondition got status valid +PROJECT_FILE.i:62:[value] Function mpz_add: precondition got status valid +[value] Done for function mpz_add +[value] computing for function mpz_cmp <- main. + Called from PROJECT_FILE.i:172. +[value] Done for function mpz_cmp +[value] computing for function e_acsl_fail <- main. + Called from PROJECT_FILE.i:173. +[value] computing for function printf <- e_acsl_fail <- main. + Called from PROJECT_FILE.i:125. +[value] Done for function printf +[value] computing for function exit <- e_acsl_fail <- main. + Called from PROJECT_FILE.i:125. +[value] Done for function exit +[value] Recording results for e_acsl_fail +[value] Done for function e_acsl_fail +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:174. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:174. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:174. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:175. +[value] Done for function mpz_clear +PROJECT_FILE.i:178:[value] Assertion got status valid. +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:181. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:182. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_init <- main. + Called from PROJECT_FILE.i:182. +[value] Done for function mpz_init +[value] computing for function mpz_sub <- main. + Called from PROJECT_FILE.i:183. +PROJECT_FILE.i:66:[value] Function mpz_sub: precondition got status valid +PROJECT_FILE.i:67:[value] Function mpz_sub: precondition got status valid +PROJECT_FILE.i:68:[value] Function mpz_sub: precondition got status valid +[value] Done for function mpz_sub +[value] computing for function mpz_get_si <- main. + Called from PROJECT_FILE.i:184. +[value] Done for function mpz_get_si +PROJECT_FILE.i:185:[kernel] warning: accessing out of bounds index [-2147483648..2147483647]. + assert 0 ≤ (int)e_acsl_20 ∧ (int)e_acsl_20 < 3; +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:185. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:186. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:186. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_init <- main. + Called from PROJECT_FILE.i:187. +[value] Done for function mpz_init +[value] computing for function mpz_sub <- main. + Called from PROJECT_FILE.i:187. +[value] Done for function mpz_sub +[value] computing for function mpz_cmp <- main. + Called from PROJECT_FILE.i:188. +[value] Done for function mpz_cmp +[value] computing for function e_acsl_fail <- main. + Called from PROJECT_FILE.i:189. +[value] computing for function printf <- e_acsl_fail <- main. + Called from PROJECT_FILE.i:125. +[value] Done for function printf +[value] computing for function exit <- e_acsl_fail <- main. + Called from PROJECT_FILE.i:125. +[value] Done for function exit +[value] Recording results for e_acsl_fail +[value] Done for function e_acsl_fail +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:190. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:190. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:190. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:191. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:191. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:191. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:192. +[value] Done for function mpz_clear +PROJECT_FILE.i:195:[value] Assertion got status valid. +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:198. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_get_si <- main. + Called from PROJECT_FILE.i:199. +[value] Done for function mpz_get_si +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:199. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_get_si <- main. + Called from PROJECT_FILE.i:200. +[value] Done for function mpz_get_si +PROJECT_FILE.i:201:[kernel] warning: out of bounds read. assert \valid(&t[(int)e_acsl_27]-(int)e_acsl_29); +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:201. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:202. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:202. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_init <- main. + Called from PROJECT_FILE.i:203. +[value] Done for function mpz_init +[value] computing for function mpz_sub <- main. + Called from PROJECT_FILE.i:203. +[value] Done for function mpz_sub +[value] computing for function mpz_cmp <- main. + Called from PROJECT_FILE.i:204. +[value] Done for function mpz_cmp +[value] computing for function e_acsl_fail <- main. + Called from PROJECT_FILE.i:205. +[value] computing for function printf <- e_acsl_fail <- main. + Called from PROJECT_FILE.i:125. +[value] Done for function printf +[value] computing for function exit <- e_acsl_fail <- main. + Called from PROJECT_FILE.i:125. +[value] Done for function exit +[value] Recording results for e_acsl_fail +[value] Done for function e_acsl_fail +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:206. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:206. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:206. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:207. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:207. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:207. +[value] Done for function mpz_clear +PROJECT_FILE.i:167:[value] Assertion got status unknown. +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:169. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:170. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:170. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_init <- main. + Called from PROJECT_FILE.i:171. +[value] Done for function mpz_init +[value] computing for function mpz_add <- main. + Called from PROJECT_FILE.i:171. +[value] Done for function mpz_add +[value] computing for function mpz_cmp <- main. + Called from PROJECT_FILE.i:172. +[value] Done for function mpz_cmp +[value] computing for function e_acsl_fail <- main. + Called from PROJECT_FILE.i:173. +[value] computing for function printf <- e_acsl_fail <- main. + Called from PROJECT_FILE.i:125. +[value] Done for function printf +[value] computing for function exit <- e_acsl_fail <- main. + Called from PROJECT_FILE.i:125. +[value] Done for function exit +[value] Recording results for e_acsl_fail +[value] Done for function e_acsl_fail +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:174. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:174. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:174. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:175. +[value] Done for function mpz_clear +PROJECT_FILE.i:178:[value] Assertion got status unknown. +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:181. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:182. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_init <- main. + Called from PROJECT_FILE.i:182. +[value] Done for function mpz_init +[value] computing for function mpz_sub <- main. + Called from PROJECT_FILE.i:183. +[value] Done for function mpz_sub +[value] computing for function mpz_get_si <- main. + Called from PROJECT_FILE.i:184. +[value] Done for function mpz_get_si +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:185. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:186. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:186. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_init <- main. + Called from PROJECT_FILE.i:187. +[value] Done for function mpz_init +[value] computing for function mpz_sub <- main. + Called from PROJECT_FILE.i:187. +[value] Done for function mpz_sub +[value] computing for function mpz_cmp <- main. + Called from PROJECT_FILE.i:188. +[value] Done for function mpz_cmp +[value] computing for function e_acsl_fail <- main. + Called from PROJECT_FILE.i:189. +[value] computing for function printf <- e_acsl_fail <- main. + Called from PROJECT_FILE.i:125. +[value] Done for function printf +[value] computing for function exit <- e_acsl_fail <- main. + Called from PROJECT_FILE.i:125. +[value] Done for function exit +[value] Recording results for e_acsl_fail +[value] Done for function e_acsl_fail +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:190. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:190. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:190. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:191. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:191. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:191. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:192. +[value] Done for function mpz_clear +PROJECT_FILE.i:195:[value] Assertion got status unknown. +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:198. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_get_si <- main. + Called from PROJECT_FILE.i:199. +[value] Done for function mpz_get_si +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:199. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_get_si <- main. + Called from PROJECT_FILE.i:200. +[value] Done for function mpz_get_si +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:201. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:202. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:202. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_init <- main. + Called from PROJECT_FILE.i:203. +[value] Done for function mpz_init +[value] computing for function mpz_sub <- main. + Called from PROJECT_FILE.i:203. +[value] Done for function mpz_sub +[value] computing for function mpz_cmp <- main. + Called from PROJECT_FILE.i:204. +[value] Done for function mpz_cmp +[value] computing for function e_acsl_fail <- main. + Called from PROJECT_FILE.i:205. +[value] computing for function printf <- e_acsl_fail <- main. + Called from PROJECT_FILE.i:125. +[value] Done for function printf +[value] computing for function exit <- e_acsl_fail <- main. + Called from PROJECT_FILE.i:125. +[value] Done for function exit +[value] Recording results for e_acsl_fail +[value] Done for function e_acsl_fail +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:206. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:206. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:206. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:207. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:207. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:207. +[value] Done for function mpz_clear +PROJECT_FILE.i:210:[value] assigning non deterministic value for the first time +PROJECT_FILE.i:216:[value] Assertion got status valid. +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:218. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_init_set_si <- main. + Called from PROJECT_FILE.i:218. +[value] Done for function mpz_init_set_si +[value] computing for function mpz_cmp <- main. + Called from PROJECT_FILE.i:219. +[value] Done for function mpz_cmp +[value] computing for function e_acsl_fail <- main. + Called from PROJECT_FILE.i:220. +[value] computing for function printf <- e_acsl_fail <- main. + Called from PROJECT_FILE.i:125. +[value] Done for function printf +[value] computing for function exit <- e_acsl_fail <- main. + Called from PROJECT_FILE.i:125. +[value] Done for function exit +[value] Recording results for e_acsl_fail +[value] Done for function e_acsl_fail +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:221. +[value] Done for function mpz_clear +[value] computing for function mpz_clear <- main. + Called from PROJECT_FILE.i:221. +[value] Done for function mpz_clear +[value] Recording results for main +[value] done for function main +[from] Computing for function mpz_init_set_si +[from] Done for function mpz_init_set_si +[from] Computing for function mpz_cmp +[from] Done for function mpz_cmp +[from] Computing for function e_acsl_fail +[from] Computing for function printf <-e_acsl_fail +[from] Done for function printf +PROJECT_FILE.i:125:[from] warning: variadic call detected. Using only 1 argument(s). +[from] Computing for function exit <-e_acsl_fail +[from] Done for function exit +PROJECT_FILE.i:125:[from] Non terminating function (no dependencies) +[from] Done for function e_acsl_fail +[from] Computing for function mpz_clear +[from] Done for function mpz_clear +[from] Computing for function mpz_get_si +[from] Done for function mpz_get_si +[from] Computing for function mpz_init +[from] Done for function mpz_init +[from] Computing for function mpz_add +[from] Done for function mpz_add +[from] Computing for function mpz_sub +[from] Done for function mpz_sub +[value] ====== VALUES COMPUTED ====== +[value] Values for function e_acsl_fail: + NON TERMINATING FUNCTION +[value] Values for function main: + __retres ∈ {0} + x ∈ {1} + t[0] ∈ {2} + [1] ∈ {3} + [2] ∈ {5} + p ∈ {{ &t + {8} }} +/* Generated by Frama-C */ +struct __anonstruct___mpz_struct_1 { + int _mp_alloc ; + int _mp_size ; + unsigned long *_mp_d ; +}; +typedef struct __anonstruct___mpz_struct_1 __mpz_struct; +typedef __mpz_struct mpz_t[1]; +/*@ ensures \valid(\old(x)); + assigns *x; */ +extern void mpz_init(__mpz_struct * /*[1]*/ x); +/*@ ensures \valid(\old(z)); + assigns *z; */ +extern void mpz_init_set_si(__mpz_struct * /*[1]*/ z, long n); +/*@ requires \valid(x); + assigns *x; */ +extern void mpz_clear(__mpz_struct * /*[1]*/ x); +/*@ requires \valid(z1); + requires \valid(z2); + assigns \nothing; */ +extern int mpz_cmp(__mpz_struct const * /*[1]*/ z1, + __mpz_struct const * /*[1]*/ z2); +/*@ requires \valid(z1); + requires \valid(z2); + requires \valid(z3); + assigns *z1; +*/ +extern void mpz_add(__mpz_struct * /*[1]*/ z1, + __mpz_struct const * /*[1]*/ z2, + __mpz_struct const * /*[1]*/ z3); +/*@ requires \valid(z1); + requires \valid(z2); + requires \valid(z3); + assigns *z1; +*/ +extern void mpz_sub(__mpz_struct * /*[1]*/ z1, + __mpz_struct const * /*[1]*/ z2, + __mpz_struct const * /*[1]*/ z3); +/*@ requires \valid(z); + assigns \nothing; */ +extern long mpz_get_si(__mpz_struct const * /*[1]*/ z); +/*@ terminates \false; + ensures \false; + assigns \nothing; */ +extern void exit(int status); +/*@ assigns \nothing; */ +extern int printf(char const * , ...); +void e_acsl_fail(char *msg) +{ + printf("%s\n",msg); + exit(1); + return; +} + +int main(void) +{ + int __retres; + int x; + int t[3]; + int *p; + x = 1; + t[0] = 2; + t[1] = 3; + t[2] = 4; + p = & x; + /*@ assert *p ≡ 1; */ ; + { mpz_t e_acsl_1; mpz_t e_acsl_2; int e_acsl_3; + mpz_init_set_si((__mpz_struct *)(e_acsl_1),(long)*p); + mpz_init_set_si((__mpz_struct *)(e_acsl_2),(long)1); + e_acsl_3 = mpz_cmp((__mpz_struct const *)(e_acsl_1), + (__mpz_struct const *)(e_acsl_2)); + if (! (e_acsl_3 == 0)) { e_acsl_fail((char *)"(*p == 1)"); } + mpz_clear((__mpz_struct *)(e_acsl_1)); + mpz_clear((__mpz_struct *)(e_acsl_2)); + } + + /*@ assert t[0] ≡ 2; */ ; + { mpz_t e_acsl_4; mpz_t e_acsl_5; int e_acsl_6; + mpz_init_set_si((__mpz_struct *)(e_acsl_4),(long)t[0]); + mpz_init_set_si((__mpz_struct *)(e_acsl_5),(long)2); + e_acsl_6 = mpz_cmp((__mpz_struct const *)(e_acsl_4), + (__mpz_struct const *)(e_acsl_5)); + if (! (e_acsl_6 == 0)) { e_acsl_fail((char *)"(t[0] == 2)"); } + mpz_clear((__mpz_struct *)(e_acsl_4)); + mpz_clear((__mpz_struct *)(e_acsl_5)); + } + + /*@ assert t[2] ≡ 4; */ ; + { mpz_t e_acsl_7; long e_acsl_8; mpz_t e_acsl_9; mpz_t e_acsl_10; + int e_acsl_11; mpz_init_set_si((__mpz_struct *)(e_acsl_7),(long)2); + e_acsl_8 = mpz_get_si((__mpz_struct const *)(e_acsl_7)); + /*@ assert 0 ≤ (int)e_acsl_8 ∧ (int)e_acsl_8 < 3; + // synthesized + + */ + mpz_init_set_si((__mpz_struct *)(e_acsl_9),(long)t[(int)e_acsl_8]); + mpz_init_set_si((__mpz_struct *)(e_acsl_10),(long)4); + e_acsl_11 = mpz_cmp((__mpz_struct const *)(e_acsl_9), + (__mpz_struct const *)(e_acsl_10)); + if (! (e_acsl_11 == 0)) { e_acsl_fail((char *)"(t[2] == 4)"); } + mpz_clear((__mpz_struct *)(e_acsl_7)); + mpz_clear((__mpz_struct *)(e_acsl_9)); + mpz_clear((__mpz_struct *)(e_acsl_10)); + } + + { int i; i = 0; + while (1) { + if (! (i < 2)) { break; } + /*@ assert t[i] ≡ i+2; */ ; + { mpz_t e_acsl_12; mpz_t e_acsl_13; mpz_t e_acsl_14; mpz_t e_acsl_15; + int e_acsl_16; + mpz_init_set_si((__mpz_struct *)(e_acsl_12),(long)t[i]); + mpz_init_set_si((__mpz_struct *)(e_acsl_13),(long)i); + mpz_init_set_si((__mpz_struct *)(e_acsl_14),(long)2); + mpz_init((__mpz_struct *)(e_acsl_15)); + mpz_add((__mpz_struct *)(e_acsl_15), + (__mpz_struct const *)(e_acsl_13), + (__mpz_struct const *)(e_acsl_14)); + e_acsl_16 = mpz_cmp((__mpz_struct const *)(e_acsl_12), + (__mpz_struct const *)(e_acsl_15)); + if (! (e_acsl_16 == 0)) { e_acsl_fail((char *)"(t[i] == i+2)"); } + mpz_clear((__mpz_struct *)(e_acsl_12)); + mpz_clear((__mpz_struct *)(e_acsl_13)); + mpz_clear((__mpz_struct *)(e_acsl_14)); + mpz_clear((__mpz_struct *)(e_acsl_15)); + } + + /*@ assert t[2-i] ≡ 4-i; */ ; + { mpz_t e_acsl_17; mpz_t e_acsl_18; mpz_t e_acsl_19; long e_acsl_20; + mpz_t e_acsl_21; mpz_t e_acsl_22; mpz_t e_acsl_23; mpz_t e_acsl_24; + int e_acsl_25; mpz_init_set_si((__mpz_struct *)(e_acsl_17),(long)2); + mpz_init_set_si((__mpz_struct *)(e_acsl_18),(long)i); + mpz_init((__mpz_struct *)(e_acsl_19)); + mpz_sub((__mpz_struct *)(e_acsl_19), + (__mpz_struct const *)(e_acsl_17), + (__mpz_struct const *)(e_acsl_18)); + e_acsl_20 = mpz_get_si((__mpz_struct const *)(e_acsl_19)); + /*@ assert 0 ≤ (int)e_acsl_20 ∧ (int)e_acsl_20 < 3; + // synthesized + + */ + mpz_init_set_si((__mpz_struct *)(e_acsl_21),(long)t[(int)e_acsl_20]); + mpz_init_set_si((__mpz_struct *)(e_acsl_22),(long)4); + mpz_init_set_si((__mpz_struct *)(e_acsl_23),(long)i); + mpz_init((__mpz_struct *)(e_acsl_24)); + mpz_sub((__mpz_struct *)(e_acsl_24), + (__mpz_struct const *)(e_acsl_22), + (__mpz_struct const *)(e_acsl_23)); + e_acsl_25 = mpz_cmp((__mpz_struct const *)(e_acsl_21), + (__mpz_struct const *)(e_acsl_24)); + if (! (e_acsl_25 == 0)) { e_acsl_fail((char *)"(t[2-i] == 4-i)"); } + mpz_clear((__mpz_struct *)(e_acsl_17)); + mpz_clear((__mpz_struct *)(e_acsl_18)); + mpz_clear((__mpz_struct *)(e_acsl_19)); + mpz_clear((__mpz_struct *)(e_acsl_21)); + mpz_clear((__mpz_struct *)(e_acsl_22)); + mpz_clear((__mpz_struct *)(e_acsl_23)); + mpz_clear((__mpz_struct *)(e_acsl_24)); + } + + /*@ assert *(&t[2]-i) ≡ 4-i; */ ; + { mpz_t e_acsl_26; long e_acsl_27; mpz_t e_acsl_28; long e_acsl_29; + mpz_t e_acsl_30; mpz_t e_acsl_31; mpz_t e_acsl_32; mpz_t e_acsl_33; + int e_acsl_34; mpz_init_set_si((__mpz_struct *)(e_acsl_26),(long)2); + e_acsl_27 = mpz_get_si((__mpz_struct const *)(e_acsl_26)); + mpz_init_set_si((__mpz_struct *)(e_acsl_28),(long)i); + e_acsl_29 = mpz_get_si((__mpz_struct const *)(e_acsl_28)); + /*@ assert \valid(&t[(int)e_acsl_27]-(int)e_acsl_29); + // synthesized + + */ + mpz_init_set_si((__mpz_struct *)(e_acsl_30), + (long)*(& t[(int)e_acsl_27] - (int)e_acsl_29)); + mpz_init_set_si((__mpz_struct *)(e_acsl_31),(long)4); + mpz_init_set_si((__mpz_struct *)(e_acsl_32),(long)i); + mpz_init((__mpz_struct *)(e_acsl_33)); + mpz_sub((__mpz_struct *)(e_acsl_33), + (__mpz_struct const *)(e_acsl_31), + (__mpz_struct const *)(e_acsl_32)); + e_acsl_34 = mpz_cmp((__mpz_struct const *)(e_acsl_30), + (__mpz_struct const *)(e_acsl_33)); + if (! (e_acsl_34 == 0)) { e_acsl_fail((char *)"(*(&t[2]-i) == 4-i)"); + } mpz_clear((__mpz_struct *)(e_acsl_26)); + mpz_clear((__mpz_struct *)(e_acsl_28)); + mpz_clear((__mpz_struct *)(e_acsl_30)); + mpz_clear((__mpz_struct *)(e_acsl_31)); + mpz_clear((__mpz_struct *)(e_acsl_32)); + mpz_clear((__mpz_struct *)(e_acsl_33)); + } + + i ++; + } + } + + p = & t[2]; + t[2] = 5; + /*@ assert *p ≡ 5; */ ; + { mpz_t e_acsl_35; mpz_t e_acsl_36; int e_acsl_37; + mpz_init_set_si((__mpz_struct *)(e_acsl_35),(long)*p); + mpz_init_set_si((__mpz_struct *)(e_acsl_36),(long)5); + e_acsl_37 = mpz_cmp((__mpz_struct const *)(e_acsl_35), + (__mpz_struct const *)(e_acsl_36)); + if (! (e_acsl_37 == 0)) { e_acsl_fail((char *)"(*p == 5)"); } + mpz_clear((__mpz_struct *)(e_acsl_35)); + mpz_clear((__mpz_struct *)(e_acsl_36)); + } + + __retres = 0; + return (__retres); +} + + diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/sizeof.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/sizeof.res.oracle index 8da14fb3b3c..290d64bdfb2 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/sizeof.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/sizeof.res.oracle @@ -2,8 +2,8 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:121:[value] Assertion got status valid. -PROJECT_FILE.i:124:[value] Assertion got status valid. +PROJECT_FILE.i:131:[value] Assertion got status valid. +PROJECT_FILE.i:134:[value] Assertion got status valid. [value] Recording results for main [value] done for function main [value] ====== VALUES COMPUTED ====== diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/stmt_contract.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/stmt_contract.res.oracle index 489d27a1e0a..b483a01554a 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/stmt_contract.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/stmt_contract.res.oracle @@ -3,584 +3,584 @@ [value] Initial state computed [value] Values of globals at initialization [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:127. + Called from PROJECT_FILE.i:137. PROJECT_FILE.i:29:[value] Function mpz_init_set_si: postcondition got status unknown [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:127. + Called from PROJECT_FILE.i:137. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:128. + Called from PROJECT_FILE.i:138. PROJECT_FILE.i:45:[value] Function mpz_cmp: precondition got status valid PROJECT_FILE.i:46:[value] Function mpz_cmp: precondition got status valid [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:129. + Called from PROJECT_FILE.i:139. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. -PROJECT_FILE.i:105:[value] Function exit: postcondition got status invalid + Called from PROJECT_FILE.i:125. +PROJECT_FILE.i:115:[value] Function exit: postcondition got status invalid [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:130. + Called from PROJECT_FILE.i:140. PROJECT_FILE.i:39:[value] Function mpz_clear: precondition got status valid [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:130. + Called from PROJECT_FILE.i:140. [value] Done for function mpz_clear [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:138. + Called from PROJECT_FILE.i:148. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:139. + Called from PROJECT_FILE.i:149. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:140. + Called from PROJECT_FILE.i:150. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:141. + Called from PROJECT_FILE.i:151. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:142. + Called from PROJECT_FILE.i:152. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:142. + Called from PROJECT_FILE.i:152. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:143. + Called from PROJECT_FILE.i:153. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:144. + Called from PROJECT_FILE.i:154. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:145. + Called from PROJECT_FILE.i:155. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:145. + Called from PROJECT_FILE.i:155. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:145. + Called from PROJECT_FILE.i:155. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:146. + Called from PROJECT_FILE.i:156. [value] Done for function mpz_clear [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:152. + Called from PROJECT_FILE.i:162. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:152. + Called from PROJECT_FILE.i:162. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:153. + Called from PROJECT_FILE.i:163. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:154. + Called from PROJECT_FILE.i:164. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:155. + Called from PROJECT_FILE.i:165. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:155. + Called from PROJECT_FILE.i:165. [value] Done for function mpz_clear [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:162. + Called from PROJECT_FILE.i:172. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:163. + Called from PROJECT_FILE.i:173. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:163. + Called from PROJECT_FILE.i:173. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:164. + Called from PROJECT_FILE.i:174. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:165. + Called from PROJECT_FILE.i:175. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:165. + Called from PROJECT_FILE.i:175. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:166. + Called from PROJECT_FILE.i:176. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:167. + Called from PROJECT_FILE.i:177. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:168. + Called from PROJECT_FILE.i:178. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:168. + Called from PROJECT_FILE.i:178. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:168. + Called from PROJECT_FILE.i:178. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:169. + Called from PROJECT_FILE.i:179. [value] Done for function mpz_clear [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:187. + Called from PROJECT_FILE.i:197. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:187. + Called from PROJECT_FILE.i:197. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:188. + Called from PROJECT_FILE.i:198. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:189. + Called from PROJECT_FILE.i:199. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:190. + Called from PROJECT_FILE.i:200. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:190. + Called from PROJECT_FILE.i:200. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:191. + Called from PROJECT_FILE.i:201. [value] Done for function mpz_init_set_si [value] computing for function mpz_init <- main. - Called from PROJECT_FILE.i:191. + Called from PROJECT_FILE.i:201. PROJECT_FILE.i:21:[value] Function mpz_init: postcondition got status unknown [value] Done for function mpz_init [value] computing for function mpz_add <- main. - Called from PROJECT_FILE.i:192. + Called from PROJECT_FILE.i:202. PROJECT_FILE.i:60:[value] Function mpz_add: precondition got status valid PROJECT_FILE.i:61:[value] Function mpz_add: precondition got status valid PROJECT_FILE.i:62:[value] Function mpz_add: precondition got status valid [value] Done for function mpz_add [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:193. + Called from PROJECT_FILE.i:203. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:194. + Called from PROJECT_FILE.i:204. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:195. + Called from PROJECT_FILE.i:205. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:195. + Called from PROJECT_FILE.i:205. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:196. + Called from PROJECT_FILE.i:206. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:197. + Called from PROJECT_FILE.i:207. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:198. + Called from PROJECT_FILE.i:208. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:198. + Called from PROJECT_FILE.i:208. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:198. + Called from PROJECT_FILE.i:208. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:199. + Called from PROJECT_FILE.i:209. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:199. + Called from PROJECT_FILE.i:209. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:199. + Called from PROJECT_FILE.i:209. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:200. + Called from PROJECT_FILE.i:210. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:200. + Called from PROJECT_FILE.i:210. [value] Done for function mpz_clear [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:205. + Called from PROJECT_FILE.i:215. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:205. + Called from PROJECT_FILE.i:215. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:206. + Called from PROJECT_FILE.i:216. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:207. + Called from PROJECT_FILE.i:217. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:208. + Called from PROJECT_FILE.i:218. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:208. + Called from PROJECT_FILE.i:218. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:209. + Called from PROJECT_FILE.i:219. [value] Done for function mpz_init_set_si [value] computing for function mpz_init <- main. - Called from PROJECT_FILE.i:209. + Called from PROJECT_FILE.i:219. [value] Done for function mpz_init [value] computing for function mpz_add <- main. - Called from PROJECT_FILE.i:210. + Called from PROJECT_FILE.i:220. [value] Done for function mpz_add [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:211. + Called from PROJECT_FILE.i:221. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:212. + Called from PROJECT_FILE.i:222. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:213. + Called from PROJECT_FILE.i:223. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:213. + Called from PROJECT_FILE.i:223. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:213. + Called from PROJECT_FILE.i:223. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:214. + Called from PROJECT_FILE.i:224. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:214. + Called from PROJECT_FILE.i:224. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:214. + Called from PROJECT_FILE.i:224. [value] Done for function mpz_clear [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:236. + Called from PROJECT_FILE.i:246. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:237. + Called from PROJECT_FILE.i:247. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:237. + Called from PROJECT_FILE.i:247. [value] Done for function mpz_cmp [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:243. + Called from PROJECT_FILE.i:253. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:244. + Called from PROJECT_FILE.i:254. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:245. + Called from PROJECT_FILE.i:255. [value] Done for function mpz_cmp -PROJECT_FILE.i:246:[value] assigning non deterministic value for the first time +PROJECT_FILE.i:256:[value] assigning non deterministic value for the first time [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:247. + Called from PROJECT_FILE.i:257. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:248. + Called from PROJECT_FILE.i:258. [value] Done for function mpz_clear [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:249. + Called from PROJECT_FILE.i:259. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:250. + Called from PROJECT_FILE.i:260. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:250. + Called from PROJECT_FILE.i:260. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:251. + Called from PROJECT_FILE.i:261. [value] Done for function mpz_cmp [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:256. + Called from PROJECT_FILE.i:266. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:257. + Called from PROJECT_FILE.i:267. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:258. + Called from PROJECT_FILE.i:268. [value] Done for function mpz_cmp [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:260. + Called from PROJECT_FILE.i:270. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:261. + Called from PROJECT_FILE.i:271. [value] Done for function mpz_clear [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:267. + Called from PROJECT_FILE.i:277. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:268. + Called from PROJECT_FILE.i:278. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:269. + Called from PROJECT_FILE.i:279. [value] Done for function mpz_cmp [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:271. + Called from PROJECT_FILE.i:281. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:272. + Called from PROJECT_FILE.i:282. [value] Done for function mpz_clear [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:273. + Called from PROJECT_FILE.i:283. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:274. + Called from PROJECT_FILE.i:284. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:274. + Called from PROJECT_FILE.i:284. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:275. + Called from PROJECT_FILE.i:285. [value] Done for function mpz_cmp [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:280. + Called from PROJECT_FILE.i:290. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:281. + Called from PROJECT_FILE.i:291. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:282. + Called from PROJECT_FILE.i:292. [value] Done for function mpz_cmp [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:284. + Called from PROJECT_FILE.i:294. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:285. + Called from PROJECT_FILE.i:295. [value] Done for function mpz_clear [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:293. + Called from PROJECT_FILE.i:303. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:294. + Called from PROJECT_FILE.i:304. [value] Done for function mpz_init_set_si [value] computing for function mpz_init <- main. - Called from PROJECT_FILE.i:295. + Called from PROJECT_FILE.i:305. [value] Done for function mpz_init [value] computing for function mpz_add <- main. - Called from PROJECT_FILE.i:296. + Called from PROJECT_FILE.i:306. [value] Done for function mpz_add [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:297. + Called from PROJECT_FILE.i:307. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:298. + Called from PROJECT_FILE.i:308. [value] Done for function mpz_cmp [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:300. + Called from PROJECT_FILE.i:310. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:301. + Called from PROJECT_FILE.i:311. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:302. + Called from PROJECT_FILE.i:312. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:303. + Called from PROJECT_FILE.i:313. [value] Done for function mpz_clear [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:304. + Called from PROJECT_FILE.i:314. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:305. + Called from PROJECT_FILE.i:315. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:305. + Called from PROJECT_FILE.i:315. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:305. + Called from PROJECT_FILE.i:315. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:306. + Called from PROJECT_FILE.i:316. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:306. + Called from PROJECT_FILE.i:316. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:306. + Called from PROJECT_FILE.i:316. [value] Done for function mpz_clear [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:313. + Called from PROJECT_FILE.i:323. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:313. + Called from PROJECT_FILE.i:323. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:314. + Called from PROJECT_FILE.i:324. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:315. + Called from PROJECT_FILE.i:325. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:316. + Called from PROJECT_FILE.i:326. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:316. + Called from PROJECT_FILE.i:326. [value] Done for function mpz_clear [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:320. + Called from PROJECT_FILE.i:330. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:320. + Called from PROJECT_FILE.i:330. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:321. + Called from PROJECT_FILE.i:331. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:322. + Called from PROJECT_FILE.i:332. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:323. + Called from PROJECT_FILE.i:333. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:323. + Called from PROJECT_FILE.i:333. [value] Done for function mpz_clear [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:331. + Called from PROJECT_FILE.i:341. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:331. + Called from PROJECT_FILE.i:341. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:332. + Called from PROJECT_FILE.i:342. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:333. + Called from PROJECT_FILE.i:343. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:334. + Called from PROJECT_FILE.i:344. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:334. + Called from PROJECT_FILE.i:344. [value] Done for function mpz_clear [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:338. + Called from PROJECT_FILE.i:348. [value] Done for function mpz_init_set_si [value] computing for function mpz_init_set_si <- main. - Called from PROJECT_FILE.i:338. + Called from PROJECT_FILE.i:348. [value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <- main. - Called from PROJECT_FILE.i:339. + Called from PROJECT_FILE.i:349. [value] Done for function mpz_cmp [value] computing for function e_acsl_fail <- main. - Called from PROJECT_FILE.i:340. + Called from PROJECT_FILE.i:350. [value] computing for function printf <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function printf [value] computing for function exit <- e_acsl_fail <- main. - Called from PROJECT_FILE.i:115. + Called from PROJECT_FILE.i:125. [value] Done for function exit [value] Recording results for e_acsl_fail [value] Done for function e_acsl_fail [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:341. + Called from PROJECT_FILE.i:351. [value] Done for function mpz_clear [value] computing for function mpz_clear <- main. - Called from PROJECT_FILE.i:341. + Called from PROJECT_FILE.i:351. [value] Done for function mpz_clear [value] Recording results for main [value] done for function main diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/true.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/true.res.oracle index 44d1237a75d..cc46d0611d8 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/true.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/true.res.oracle @@ -2,7 +2,7 @@ [value] Computing initial state [value] Initial state computed [value] Values of globals at initialization -PROJECT_FILE.i:122:[value] Assertion got status valid. +PROJECT_FILE.i:132:[value] Assertion got status valid. [value] Recording results for main [value] done for function main [value] ====== VALUES COMPUTED ====== diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/ptr.i b/src/plugins/e-acsl/tests/e-acsl-runtime/ptr.i new file mode 100644 index 00000000000..5c5faa229cf --- /dev/null +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/ptr.i @@ -0,0 +1,29 @@ +/* run.config + COMMENT: pointers and pointer arithmetic + EXECNOW: LOG gen_ptr.c BIN gen_ptr.out FRAMAC_SHARE=./share @frama-c@ ./tests/e-acsl-runtime/ptr.i -e-acsl-project p -e-acsl-include-headers -then-on p -print -ocode ./tests/e-acsl-runtime/result/gen_ptr.c > /dev/null && gcc -o ./tests/e-acsl-runtime/result/gen_ptr.out -lgmp ./tests/e-acsl-runtime/result/gen_ptr.c && ./tests/e-acsl-runtime/result/gen_ptr.out +*/ + +int main(void) { + + int x = 1; + int t[3] = { 2, 3, 4 }; + int *p = &x; + + /*@ assert *p == 1; */ + /*@ assert *t == 2; */ + /*@ assert *(t+2) == 4; */ + // /*@ assert *(t+2*sizeof(int)) == 4; */ // still this fucking subtyping bug + + for(int i = 0; i < 2; i++) { + /*@ assert (*(t+i) == i+2); */ ; + /*@ assert (*(t+(2-i)) == 4-i); */ ; + /*@ assert (*(t+2-i) == 4-i); */ ; + ; + } + + p = t+2; + t[2] = 5; + /*@ assert *p == 5; */ + + return 0; +} diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/stmt_contract.i b/src/plugins/e-acsl/tests/e-acsl-runtime/stmt_contract.i index eb443f78b14..a7e13016e8e 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/stmt_contract.i +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/stmt_contract.i @@ -38,7 +38,6 @@ int main(void) { @ requires x + y == 5; */ x = x + y; - // TODO: break the CFG and I don't know why :( /*@ requires x == 5; */ /*@ requires y == 2; */ x = x + y; diff --git a/src/plugins/e-acsl/visit.ml b/src/plugins/e-acsl/visit.ml index fed2d0909f4..a2c45c8a874 100644 --- a/src/plugins/e-acsl/visit.ml +++ b/src/plugins/e-acsl/visit.ml @@ -27,25 +27,6 @@ open Cil (* Transforming terms and predicates into C expressions (if any) *) (* ************************************************************************** *) -let constant_to_exp ?(loc=Location.unknown) = function - | CInt64(n, - (IBool | IChar | IUChar | IUInt | IUShort | IULong - | ISChar | IShort | IInt | ILong as k), - s) -> - kinteger64_repr ?loc k n s - | CInt64(n, (ILongLong | IULongLong), _s) -> - (* cannot use the string [s] (if any) since we do not know the base in which - it is written. Such a base is required by GMP. - [TODO] Actually possible to find the base for the string, but not done - yet *) - mkString ?loc (My_bigint.to_string n) - | CStr _ | CWStr _ | CChr _ | CReal _ | CEnum _ as c -> - new_exp ?loc (Const c) - -let tlval_to_lval = function - | TVar { lv_origin = Some v }, TNoOffset -> Var v, NoOffset - | _ -> Misc.not_yet "complex left value" - let relation_to_binop = function | Rlt -> Lt | Rgt -> Gt @@ -72,15 +53,62 @@ let wrap_leaf env e = function | Lreal -> Misc.not_yet "real number" | Larrow _ -> Misc.not_yet "logic function" +let constant_to_exp ?(loc=Location.unknown) = function + | CInt64(n, + (IBool | IChar | IUChar | IUInt | IUShort | IULong + | ISChar | IShort | IInt | ILong as k), + s) -> + kinteger64_repr ?loc k n s + | CInt64(n, (ILongLong | IULongLong), _s) -> + (* cannot use the string [s] (if any) since we do not know the base in which + it is written. Such a base is required by GMP. + [TODO] Actually possible to find the base for the string, but not done + yet *) + mkString ?loc (My_bigint.to_string n) + | CStr _ | CWStr _ | CChr _ | CReal _ | CEnum _ as c -> + new_exp ?loc (Const c) + +let rec thost_to_host env = function + | TVar { lv_origin = Some v } -> Var v, env + | TVar { lv_origin = None } -> Misc.not_yet "logic variable" + | TResult _typ -> Misc.not_yet "\\result" + | TMem t -> + (* TODO: still untested *) + let e, env = term_to_exp env t in + Options.warning ~current:true ~once:true + "missing guard for ensuring that %a is a valid memory access" + d_term t; + Mem e, env + +and toffset_to_offset env = function + | TNoOffset -> NoOffset, env + | TField(f, offset) -> + (* TODO: still untested *) + let offset, env = toffset_to_offset env offset in + Field(f, offset), env + | TIndex(t, offset) -> + let e, env = ptr_arith_term_to_exp env t in + Options.warning ~current:true ~once:true + "missing guard for ensuring that %a is a valid array index" + d_term t; + let offset, env = toffset_to_offset env offset in + Index(e, offset), env + +and tlval_to_lval env (host, offset) = + let host, env = thost_to_host env host in + let offset, env = toffset_to_offset env offset in + (host, offset), env + (* Convert an ACSL term into a corresponding C expression (if any) in the given environment. Also extend this environment which includes the generating constructs. *) -let rec term_to_exp env t = +and term_to_exp env t = let loc = t.term_loc in match t.term_node with | TConst c -> wrap_leaf env (constant_to_exp ~loc c) t.term_type | TLval lv -> - wrap_leaf env (new_exp ~loc (Lval (tlval_to_lval lv))) t.term_type + let lv, env = tlval_to_lval env lv in + wrap_leaf env (new_exp ~loc (Lval lv)) t.term_type | TSizeOf ty -> sizeOf ~loc ty, env | TSizeOfE t -> let e, env = term_to_exp env t in @@ -143,8 +171,8 @@ let rec term_to_exp env t = | TBinOp(PlusPI | IndexPI | MinusPI | MinusPP as bop, t1, t2) -> (* binary operation over pointers *) (* [TODO] untested *) - let e1, env = term_to_exp env t1 in - let e2, env = term_to_exp env t2 in + let e1, env = ptr_arith_term_to_exp env t1 in + let e2, env = ptr_arith_term_to_exp env t2 in Options.warning ~current:true ~once:true "missing guard for ensuring that %a is a valid pointer" d_term t; @@ -152,11 +180,31 @@ let rec term_to_exp env t = whatever is [e2] *) new_exp ~loc (BinOp(bop, e1, e2, typeOf e1)), env | TCastE(ty, t) -> - (* [TODO] missing guard for ensuring no overflow when casting *) + (* [TODO] missing guard for ensuring no overflow when casting. + Whether the guard should be emit depends on the subtyping relation. *) let e, env = term_to_exp env t in + let e, env = + if Mpz.e_got_t e then begin + (* casting mpz_t to C type is unsafe: + use dedicated gmp functions for coercions *) + let name, ty = + if isSignedInteger ty then "mpz_get_si", longType + else "mpz_get_ui", ulongType + in + Env.new_var + env + ty + (fun v _ -> [ Misc.mk_call ~loc ~result:(var v) name [ e ] ]) + end else + e, env + in mkCast e ty, env - | TAddrOf lv -> mkAddrOf ~loc (tlval_to_lval lv), env - | TStartOf _ -> Misc.not_yet "beginning of an array" + | TAddrOf lv -> + let lv, env = tlval_to_lval env lv in + mkAddrOf ~loc lv, env + | TStartOf lv -> + let lv, env = tlval_to_lval env lv in + mkAddrOrStartOf ~loc lv, env | Tapp _ -> Misc.not_yet "applying logic function" | Tlambda _ -> Misc.not_yet "functional" | TDataCons _ -> Misc.not_yet "constructor" @@ -164,7 +212,7 @@ let rec term_to_exp env t = | Tat _ -> Misc.not_yet "\\at" | Tbase_addr _ -> Misc.not_yet "\\base_addr" | Tblock_length _ -> Misc.not_yet "\\block_length" - | Tnull -> Misc.not_yet "NULL" + | Tnull -> mkCast (zero ~loc) (TPtr(TVoid [], [])), env | TCoerce _ -> Misc.not_yet "coercion" | TCoerceE _ -> Misc.not_yet "expression coercion" | TUpdate _ -> Misc.not_yet "functional update" @@ -177,11 +225,18 @@ let rec term_to_exp env t = | Trange _ -> Misc.not_yet "range" | Tlet _ -> Misc.not_yet "let binding" +and ptr_arith_term_to_exp env t = match t.term_type with + | Linteger -> + (* add cast to prevent generation of mpz_t values for ptr arithmetics *) + term_to_exp env (Logic_const.term (TCastE(intType, t)) (Ctype intType)) + | Ctype _ -> term_to_exp env t + | Ltype _ | Lvar _ | Lreal | Larrow _ -> assert false + (* generate the C code equivalent to [t1 bop t2]. *) and comparison_to_exp ?(loc=Location.unknown) env bop t1 t2 = let e1, env = term_to_exp env t1 in let e2, env = term_to_exp env t2 in - (* Options.feedback "ty1=%a; ty2=%a" d_type (typeOf e1) d_type (typeOf e2);*) +(* Options.feedback "ty1=%a; ty2=%a" d_type (typeOf e1) d_type (typeOf e2);*) assert (Typ.equal (typeOf e1) (typeOf e2)); if Mpz.e_got_t e1 then let e, env = @@ -405,7 +460,7 @@ class e_acsl_visitor prj generate = object (self) let old_kf = Globals.Functions.get old_vi in let spec = Visitor.visitFramacFunspec - (self :> Visitor.frama_c_visitor) + (self :> Visitor.frama_c_visitor) (Kernel_function.get_spec old_kf) in let pre_b, post_b, env = -- GitLab