diff --git a/src/plugins/e-acsl/TODO b/src/plugins/e-acsl/TODO index 701aab53a56219c06906d4010a9195ecd00ca388..ccec0b43e6f6b4b8f9239cced908d73144d203fd 100644 --- a/src/plugins/e-acsl/TODO +++ b/src/plugins/e-acsl/TODO @@ -4,6 +4,7 @@ see http://gmplib.org/manual-4.3.2/Simultaneous-Integer-Init-_0026-Assign.html#Simultaneous-Integer-Init-_0026-Assign - améliorer test "comparison.i" quand bug fixed #744 +- remettre test "cast.i" quand bug fixed #744 - améliorer test "integer_constant.i" quand bug fixed #745 en lien avec bts #743: diff --git a/src/plugins/e-acsl/share/e_acsl.h b/src/plugins/e-acsl/share/e_acsl.h index 67ccc54b8fe7d803c00e6451c10e03264461ea7f..9969d4680907e05ea66da5e8601bea9608b2a8ac 100644 --- a/src/plugins/e-acsl/share/e_acsl.h +++ b/src/plugins/e-acsl/share/e_acsl.h @@ -32,17 +32,17 @@ extern void mpz_init(mpz_t x); @ assigns *x; */ extern void mpz_clear(mpz_t x); -/*@ requires \valid(z); +/*@ ensures \valid(z); @ assigns *z; */ -extern void mpz_set_ui(mpz_t z, unsigned long int n); +extern void mpz_init_set_ui(mpz_t z, unsigned long int n); -/*@ requires \valid(z); +/*@ ensures \valid(z); @ assigns *z; */ -extern void mpz_set_si(mpz_t z, signed long int n); +extern void mpz_init_set_si(mpz_t z, signed long int n); -/*@ requires \valid(z); +/*@ ensures \valid(z); @ assigns *z; */ -extern void mpz_set_str(mpz_t z, char *str, int base); +extern void mpz_init_set_str(mpz_t z, char *str, int base); /*@ requires \valid(z1); @ requires \valid(z2); 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 5e70f717119a0db6db67c43c51577dda49024563..08e0908839626e224806fc6e320d924a0b5cc891 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/cast.i +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/cast.i @@ -1,8 +1,11 @@ /* run.config - COMMENT: cast */ + DONTRUN: + COMMENT: cast + COMMENT: waiting for fixing bts #744 */ void main() { long x = 0; int y = 0; /*@ assert (int)x == y; */ ; + /*@ assert x == (long)y; */ ; } 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 5dcf0a3d4a3048328c908a4101ce850b40e7922c..2d2ef36e82c14605bf8bc8ab4e9ee5b6ee7da2cc 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 @@ -3,28 +3,19 @@ [value] Initial state computed [value] Values of globals at initialization PROJECT_FILE:78:[value] Assertion got status valid. -[value] computing for function mpz_init <-main. +[value] computing for function mpz_init_set_si <-main. Called from PROJECT_FILE:80. -PROJECT_FILE:80:[value] Function mpz_init: postcondition got status unknown -[value] Done for function mpz_init -[value] computing for function mpz_set_si <-main. +PROJECT_FILE:80:[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:80. -PROJECT_FILE:80:[value] Function mpz_set_si: precondition got status valid -[value] Done for function mpz_set_si -[value] computing for function mpz_init <-main. - Called from PROJECT_FILE:81. -PROJECT_FILE:81:[value] Function mpz_init: postcondition got status unknown -[value] Done for function mpz_init -[value] computing for function mpz_set_si <-main. - Called from PROJECT_FILE:81. -PROJECT_FILE:81:[value] Function mpz_set_si: precondition got status valid -[value] Done for function mpz_set_si +[value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <-main. - Called from PROJECT_FILE:82. -PROJECT_FILE:82:[value] Function mpz_cmp: precondition got status valid + Called from PROJECT_FILE:81. +PROJECT_FILE:81:[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:83. + Called from PROJECT_FILE:82. [value] computing for function eprintf <-e_acsl_fail <-main. Called from PROJECT_FILE:69. [value] Done for function eprintf @@ -35,35 +26,26 @@ PROJECT_FILE:69:[value] Function exit: postcondition got status invalid [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:84. -PROJECT_FILE:84:[value] Function mpz_clear: precondition got status valid + Called from PROJECT_FILE:83. +PROJECT_FILE:83:[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:84. + Called from PROJECT_FILE:83. [value] Done for function mpz_clear -PROJECT_FILE:87:[value] Assertion got status valid. -[value] computing for function mpz_init <-main. - Called from PROJECT_FILE:89. -PROJECT_FILE:89:[value] Function mpz_init: postcondition got status unknown -[value] Done for function mpz_init -[value] computing for function mpz_set_si <-main. - Called from PROJECT_FILE:89. -PROJECT_FILE:89:[value] Function mpz_set_si: precondition got status valid -[value] Done for function mpz_set_si -[value] computing for function mpz_init <-main. - Called from PROJECT_FILE:90. -PROJECT_FILE:90:[value] Function mpz_init: postcondition got status unknown -[value] Done for function mpz_init -[value] computing for function mpz_set_si <-main. - Called from PROJECT_FILE:90. -PROJECT_FILE:90:[value] Function mpz_set_si: precondition got status valid -[value] Done for function mpz_set_si +PROJECT_FILE:86:[value] Assertion got status valid. +[value] computing for function mpz_init_set_si <-main. + Called from PROJECT_FILE:88. +PROJECT_FILE:88:[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:88. +[value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <-main. - Called from PROJECT_FILE:91. -PROJECT_FILE:91:[value] Function mpz_cmp: precondition got status valid + Called from PROJECT_FILE:89. +PROJECT_FILE:89:[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:92. + Called from PROJECT_FILE:90. [value] computing for function eprintf <-e_acsl_fail <-main. Called from PROJECT_FILE:69. [value] Done for function eprintf @@ -73,35 +55,26 @@ PROJECT_FILE:91:[value] Function mpz_cmp: precondition got status valid [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:93. -PROJECT_FILE:93:[value] Function mpz_clear: precondition got status valid + Called from PROJECT_FILE:91. +PROJECT_FILE:91:[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:93. + Called from PROJECT_FILE:91. [value] Done for function mpz_clear -PROJECT_FILE:96:[value] Assertion got status valid. -[value] computing for function mpz_init <-main. - Called from PROJECT_FILE:98. -PROJECT_FILE:98:[value] Function mpz_init: postcondition got status unknown -[value] Done for function mpz_init -[value] computing for function mpz_set_si <-main. - Called from PROJECT_FILE:98. -PROJECT_FILE:98:[value] Function mpz_set_si: precondition got status valid -[value] Done for function mpz_set_si -[value] computing for function mpz_init <-main. - Called from PROJECT_FILE:99. -PROJECT_FILE:99:[value] Function mpz_init: postcondition got status unknown -[value] Done for function mpz_init -[value] computing for function mpz_set_si <-main. - Called from PROJECT_FILE:99. -PROJECT_FILE:99:[value] Function mpz_set_si: precondition got status valid -[value] Done for function mpz_set_si +PROJECT_FILE:94:[value] Assertion got status valid. +[value] computing for function mpz_init_set_si <-main. + Called from PROJECT_FILE:96. +PROJECT_FILE:96:[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:96. +[value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <-main. - Called from PROJECT_FILE:100. -PROJECT_FILE:100:[value] Function mpz_cmp: precondition got status valid + Called from PROJECT_FILE:97. +PROJECT_FILE:97:[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:101. + Called from PROJECT_FILE:98. [value] computing for function eprintf <-e_acsl_fail <-main. Called from PROJECT_FILE:69. [value] Done for function eprintf @@ -111,35 +84,26 @@ PROJECT_FILE:100:[value] Function mpz_cmp: precondition got status valid [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:102. -PROJECT_FILE:102:[value] Function mpz_clear: precondition got status valid + Called from PROJECT_FILE:99. +PROJECT_FILE:99:[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:102. + Called from PROJECT_FILE:99. [value] Done for function mpz_clear -PROJECT_FILE:105:[value] Assertion got status valid. -[value] computing for function mpz_init <-main. - Called from PROJECT_FILE:107. -PROJECT_FILE:107:[value] Function mpz_init: postcondition got status unknown -[value] Done for function mpz_init -[value] computing for function mpz_set_si <-main. - Called from PROJECT_FILE:107. -PROJECT_FILE:107:[value] Function mpz_set_si: precondition got status valid -[value] Done for function mpz_set_si -[value] computing for function mpz_init <-main. - Called from PROJECT_FILE:108. -PROJECT_FILE:108:[value] Function mpz_init: postcondition got status unknown -[value] Done for function mpz_init -[value] computing for function mpz_set_si <-main. - Called from PROJECT_FILE:108. -PROJECT_FILE:108:[value] Function mpz_set_si: precondition got status valid -[value] Done for function mpz_set_si +PROJECT_FILE:102:[value] Assertion got status valid. +[value] computing for function mpz_init_set_si <-main. + Called from PROJECT_FILE:104. +PROJECT_FILE:104:[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:104. +[value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <-main. - Called from PROJECT_FILE:109. -PROJECT_FILE:109:[value] Function mpz_cmp: precondition got status valid + Called from PROJECT_FILE:105. +PROJECT_FILE:105:[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:110. + Called from PROJECT_FILE:106. [value] computing for function eprintf <-e_acsl_fail <-main. Called from PROJECT_FILE:69. [value] Done for function eprintf @@ -149,37 +113,28 @@ PROJECT_FILE:109:[value] Function mpz_cmp: precondition got status valid [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:111. -PROJECT_FILE:111:[value] Function mpz_clear: precondition got status valid + Called from PROJECT_FILE:107. +PROJECT_FILE:107:[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:111. + Called from PROJECT_FILE:107. [value] Done for function mpz_clear -PROJECT_FILE:115:[value] Assertion got status valid. -PROJECT_FILE:118:[value] Assertion got status valid. -PROJECT_FILE:121:[value] Assertion got status valid. -[value] computing for function mpz_init <-main. - Called from PROJECT_FILE:123. -PROJECT_FILE:123:[value] Function mpz_init: postcondition got status unknown -[value] Done for function mpz_init -[value] computing for function mpz_set_si <-main. - Called from PROJECT_FILE:123. -PROJECT_FILE:123:[value] Function mpz_set_si: precondition got status valid -[value] Done for function mpz_set_si -[value] computing for function mpz_init <-main. - Called from PROJECT_FILE:124. -PROJECT_FILE:124:[value] Function mpz_init: postcondition got status unknown -[value] Done for function mpz_init -[value] computing for function mpz_set_si <-main. - Called from PROJECT_FILE:124. -PROJECT_FILE:124:[value] Function mpz_set_si: precondition got status valid -[value] Done for function mpz_set_si +PROJECT_FILE:111:[value] Assertion got status valid. +PROJECT_FILE:114:[value] Assertion got status valid. +PROJECT_FILE:117:[value] Assertion got status valid. +[value] computing for function mpz_init_set_si <-main. + Called from PROJECT_FILE:119. +PROJECT_FILE:119:[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:119. +[value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <-main. - Called from PROJECT_FILE:125. -PROJECT_FILE:125:[value] Function mpz_cmp: precondition got status valid + Called from PROJECT_FILE:120. +PROJECT_FILE:120:[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:126. + Called from PROJECT_FILE:121. [value] computing for function eprintf <-e_acsl_fail <-main. Called from PROJECT_FILE:69. [value] Done for function eprintf @@ -189,35 +144,26 @@ PROJECT_FILE:125:[value] Function mpz_cmp: precondition got status valid [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:127. -PROJECT_FILE:127:[value] Function mpz_clear: precondition got status valid + Called from PROJECT_FILE:122. +PROJECT_FILE:122:[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:127. + Called from PROJECT_FILE:122. [value] Done for function mpz_clear -PROJECT_FILE:130:[value] Assertion got status valid. -[value] computing for function mpz_init <-main. - Called from PROJECT_FILE:132. -PROJECT_FILE:132:[value] Function mpz_init: postcondition got status unknown -[value] Done for function mpz_init -[value] computing for function mpz_set_si <-main. - Called from PROJECT_FILE:132. -PROJECT_FILE:132:[value] Function mpz_set_si: precondition got status valid -[value] Done for function mpz_set_si -[value] computing for function mpz_init <-main. - Called from PROJECT_FILE:133. -PROJECT_FILE:133:[value] Function mpz_init: postcondition got status unknown -[value] Done for function mpz_init -[value] computing for function mpz_set_si <-main. - Called from PROJECT_FILE:133. -PROJECT_FILE:133:[value] Function mpz_set_si: precondition got status valid -[value] Done for function mpz_set_si +PROJECT_FILE:125:[value] Assertion got status valid. +[value] computing for function mpz_init_set_si <-main. + Called from PROJECT_FILE:127. +PROJECT_FILE:127:[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:127. +[value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <-main. - Called from PROJECT_FILE:134. -PROJECT_FILE:134:[value] Function mpz_cmp: precondition got status valid + Called from PROJECT_FILE:128. +PROJECT_FILE:128:[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:135. + Called from PROJECT_FILE:129. [value] computing for function eprintf <-e_acsl_fail <-main. Called from PROJECT_FILE:69. [value] Done for function eprintf @@ -227,35 +173,26 @@ PROJECT_FILE:134:[value] Function mpz_cmp: precondition got status valid [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:136. -PROJECT_FILE:136:[value] Function mpz_clear: precondition got status valid + Called from PROJECT_FILE:130. +PROJECT_FILE:130:[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:136. + Called from PROJECT_FILE:130. [value] Done for function mpz_clear -PROJECT_FILE:139:[value] Assertion got status valid. -[value] computing for function mpz_init <-main. - Called from PROJECT_FILE:141. -PROJECT_FILE:141:[value] Function mpz_init: postcondition got status unknown -[value] Done for function mpz_init -[value] computing for function mpz_set_si <-main. - Called from PROJECT_FILE:141. -PROJECT_FILE:141:[value] Function mpz_set_si: precondition got status valid -[value] Done for function mpz_set_si -[value] computing for function mpz_init <-main. - Called from PROJECT_FILE:142. -PROJECT_FILE:142:[value] Function mpz_init: postcondition got status unknown -[value] Done for function mpz_init -[value] computing for function mpz_set_si <-main. - Called from PROJECT_FILE:142. -PROJECT_FILE:142:[value] Function mpz_set_si: precondition got status valid -[value] Done for function mpz_set_si +PROJECT_FILE:133:[value] Assertion got status valid. +[value] computing for function mpz_init_set_si <-main. + Called from PROJECT_FILE:135. +PROJECT_FILE:135:[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:135. +[value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <-main. - Called from PROJECT_FILE:143. -PROJECT_FILE:143:[value] Function mpz_cmp: precondition got status valid + Called from PROJECT_FILE:136. +PROJECT_FILE:136:[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:144. + Called from PROJECT_FILE:137. [value] computing for function eprintf <-e_acsl_fail <-main. Called from PROJECT_FILE:69. [value] Done for function eprintf @@ -265,35 +202,26 @@ PROJECT_FILE:143:[value] Function mpz_cmp: precondition got status valid [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:145. -PROJECT_FILE:145:[value] Function mpz_clear: precondition got status valid + Called from PROJECT_FILE:138. +PROJECT_FILE:138:[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:145. + Called from PROJECT_FILE:138. [value] Done for function mpz_clear -PROJECT_FILE:148:[value] Assertion got status valid. -[value] computing for function mpz_init <-main. - Called from PROJECT_FILE:150. -PROJECT_FILE:150:[value] Function mpz_init: postcondition got status unknown -[value] Done for function mpz_init -[value] computing for function mpz_set_si <-main. - Called from PROJECT_FILE:150. -PROJECT_FILE:150:[value] Function mpz_set_si: precondition got status valid -[value] Done for function mpz_set_si -[value] computing for function mpz_init <-main. - Called from PROJECT_FILE:151. -PROJECT_FILE:151:[value] Function mpz_init: postcondition got status unknown -[value] Done for function mpz_init -[value] computing for function mpz_set_si <-main. - Called from PROJECT_FILE:151. -PROJECT_FILE:151:[value] Function mpz_set_si: precondition got status valid -[value] Done for function mpz_set_si +PROJECT_FILE:141:[value] Assertion got status valid. +[value] computing for function mpz_init_set_si <-main. + Called from PROJECT_FILE:143. +PROJECT_FILE:143:[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:143. +[value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <-main. - Called from PROJECT_FILE:152. -PROJECT_FILE:152:[value] Function mpz_cmp: precondition got status valid + Called from PROJECT_FILE:144. +PROJECT_FILE:144:[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:153. + Called from PROJECT_FILE:145. [value] computing for function eprintf <-e_acsl_fail <-main. Called from PROJECT_FILE:69. [value] Done for function eprintf @@ -303,35 +231,26 @@ PROJECT_FILE:152:[value] Function mpz_cmp: precondition got status valid [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:154. -PROJECT_FILE:154:[value] Function mpz_clear: precondition got status valid + Called from PROJECT_FILE:146. +PROJECT_FILE:146:[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:154. + Called from PROJECT_FILE:146. [value] Done for function mpz_clear -PROJECT_FILE:157:[value] Assertion got status valid. -[value] computing for function mpz_init <-main. - Called from PROJECT_FILE:159. -PROJECT_FILE:159:[value] Function mpz_init: postcondition got status unknown -[value] Done for function mpz_init -[value] computing for function mpz_set_si <-main. - Called from PROJECT_FILE:159. -PROJECT_FILE:159:[value] Function mpz_set_si: precondition got status valid -[value] Done for function mpz_set_si -[value] computing for function mpz_init <-main. - Called from PROJECT_FILE:160. -PROJECT_FILE:160:[value] Function mpz_init: postcondition got status unknown -[value] Done for function mpz_init -[value] computing for function mpz_set_si <-main. - Called from PROJECT_FILE:160. -PROJECT_FILE:160:[value] Function mpz_set_si: precondition got status valid -[value] Done for function mpz_set_si +PROJECT_FILE:149:[value] Assertion got status valid. +[value] computing for function mpz_init_set_si <-main. + Called from PROJECT_FILE:151. +PROJECT_FILE:151:[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:151. +[value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <-main. - Called from PROJECT_FILE:161. -PROJECT_FILE:161:[value] Function mpz_cmp: precondition got status valid + Called from PROJECT_FILE:152. +PROJECT_FILE:152:[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:162. + Called from PROJECT_FILE:153. [value] computing for function eprintf <-e_acsl_fail <-main. Called from PROJECT_FILE:69. [value] Done for function eprintf @@ -341,35 +260,26 @@ PROJECT_FILE:161:[value] Function mpz_cmp: precondition got status valid [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:163. -PROJECT_FILE:163:[value] Function mpz_clear: precondition got status valid + Called from PROJECT_FILE:154. +PROJECT_FILE:154:[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:163. + Called from PROJECT_FILE:154. [value] Done for function mpz_clear -PROJECT_FILE:166:[value] Assertion got status valid. -[value] computing for function mpz_init <-main. - Called from PROJECT_FILE:168. -PROJECT_FILE:168:[value] Function mpz_init: postcondition got status unknown -[value] Done for function mpz_init -[value] computing for function mpz_set_si <-main. - Called from PROJECT_FILE:168. -PROJECT_FILE:168:[value] Function mpz_set_si: precondition got status valid -[value] Done for function mpz_set_si -[value] computing for function mpz_init <-main. - Called from PROJECT_FILE:169. -PROJECT_FILE:169:[value] Function mpz_init: postcondition got status unknown -[value] Done for function mpz_init -[value] computing for function mpz_set_si <-main. - Called from PROJECT_FILE:169. -PROJECT_FILE:169:[value] Function mpz_set_si: precondition got status valid -[value] Done for function mpz_set_si +PROJECT_FILE:157:[value] Assertion got status valid. +[value] computing for function mpz_init_set_si <-main. + Called from PROJECT_FILE:159. +PROJECT_FILE:159:[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:159. +[value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <-main. - Called from PROJECT_FILE:170. -PROJECT_FILE:170:[value] Function mpz_cmp: precondition got status valid + Called from PROJECT_FILE:160. +PROJECT_FILE:160:[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:171. + Called from PROJECT_FILE:161. [value] computing for function eprintf <-e_acsl_fail <-main. Called from PROJECT_FILE:69. [value] Done for function eprintf @@ -379,18 +289,16 @@ PROJECT_FILE:170:[value] Function mpz_cmp: precondition got status valid [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:172. -PROJECT_FILE:172:[value] Function mpz_clear: precondition got status valid + Called from PROJECT_FILE:162. +PROJECT_FILE:162:[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:172. + Called from PROJECT_FILE:162. [value] Done for function mpz_clear [value] Recording results for main [value] done for function main -[from] Computing for function mpz_init -[from] Done for function mpz_init -[from] Computing for function mpz_set_si -[from] Done for function mpz_set_si +[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 @@ -419,15 +327,12 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\at(x,Old)); - assigns *x; */ -extern void mpz_init(__mpz_struct * /*[1]*/ x ) ; /*@ requires \valid(x); assigns *x; */ extern void mpz_clear(__mpz_struct * /*[1]*/ x ) ; -/*@ requires \valid(z); +/*@ ensures \valid(\at(z,Old)); assigns *z; */ -extern void mpz_set_si(__mpz_struct * /*[1]*/ z , long n ) ; +extern void mpz_init_set_si(__mpz_struct * /*[1]*/ z , long n ) ; /*@ requires \valid(z1); requires \valid(z2); assigns \nothing; */ @@ -454,54 +359,46 @@ void main(void) y = 1; /*@ assert (x < y); */ ; { mpz_t e_acsl_cst_1 ; mpz_t e_acsl_cst_2 ; int e_acsl_cst_3 ; - mpz_init((__mpz_struct *)(e_acsl_cst_1)); - mpz_set_si((__mpz_struct *)(e_acsl_cst_1),(long )x); - mpz_init((__mpz_struct *)(e_acsl_cst_2)); - mpz_set_si((__mpz_struct *)(e_acsl_cst_2),(long )y); + mpz_init_set_si((__mpz_struct *)(e_acsl_cst_1),(long )x); + mpz_init_set_si((__mpz_struct *)(e_acsl_cst_2),(long )y); e_acsl_cst_3 = mpz_cmp((__mpz_struct *)(e_acsl_cst_1), (__mpz_struct *)(e_acsl_cst_2)); if (e_acsl_cst_3 >= 0) { e_acsl_fail((char *)"((x < y))"); } - mpz_clear((__mpz_struct *)(e_acsl_cst_2)); mpz_clear((__mpz_struct *)(e_acsl_cst_1)); + mpz_clear((__mpz_struct *)(e_acsl_cst_2)); } /*@ assert (y > x); */ ; { mpz_t e_acsl_cst_4 ; mpz_t e_acsl_cst_5 ; int e_acsl_cst_6 ; - mpz_init((__mpz_struct *)(e_acsl_cst_4)); - mpz_set_si((__mpz_struct *)(e_acsl_cst_4),(long )y); - mpz_init((__mpz_struct *)(e_acsl_cst_5)); - mpz_set_si((__mpz_struct *)(e_acsl_cst_5),(long )x); + mpz_init_set_si((__mpz_struct *)(e_acsl_cst_4),(long )y); + mpz_init_set_si((__mpz_struct *)(e_acsl_cst_5),(long )x); e_acsl_cst_6 = mpz_cmp((__mpz_struct *)(e_acsl_cst_4), (__mpz_struct *)(e_acsl_cst_5)); if (e_acsl_cst_6 <= 0) { e_acsl_fail((char *)"((y > x))"); } - mpz_clear((__mpz_struct *)(e_acsl_cst_5)); mpz_clear((__mpz_struct *)(e_acsl_cst_4)); + mpz_clear((__mpz_struct *)(e_acsl_cst_5)); } /*@ assert (x ≤ 0); */ ; { mpz_t e_acsl_cst_7 ; mpz_t e_acsl_cst_8 ; int e_acsl_cst_9 ; - mpz_init((__mpz_struct *)(e_acsl_cst_7)); - mpz_set_si((__mpz_struct *)(e_acsl_cst_7),(long )x); - mpz_init((__mpz_struct *)(e_acsl_cst_8)); - mpz_set_si((__mpz_struct *)(e_acsl_cst_8),(long )0); + mpz_init_set_si((__mpz_struct *)(e_acsl_cst_7),(long )x); + mpz_init_set_si((__mpz_struct *)(e_acsl_cst_8),(long )0); e_acsl_cst_9 = mpz_cmp((__mpz_struct *)(e_acsl_cst_7), (__mpz_struct *)(e_acsl_cst_8)); if (e_acsl_cst_9 > 0) { e_acsl_fail((char *)"((x <= 0))"); } - mpz_clear((__mpz_struct *)(e_acsl_cst_8)); mpz_clear((__mpz_struct *)(e_acsl_cst_7)); + mpz_clear((__mpz_struct *)(e_acsl_cst_8)); } /*@ assert (y ≥ 1); */ ; { mpz_t e_acsl_cst_10 ; mpz_t e_acsl_cst_11 ; int e_acsl_cst_12 ; - mpz_init((__mpz_struct *)(e_acsl_cst_10)); - mpz_set_si((__mpz_struct *)(e_acsl_cst_10),(long )y); - mpz_init((__mpz_struct *)(e_acsl_cst_11)); - mpz_set_si((__mpz_struct *)(e_acsl_cst_11),(long )1); + mpz_init_set_si((__mpz_struct *)(e_acsl_cst_10),(long )y); + mpz_init_set_si((__mpz_struct *)(e_acsl_cst_11),(long )1); e_acsl_cst_12 = mpz_cmp((__mpz_struct *)(e_acsl_cst_10), (__mpz_struct *)(e_acsl_cst_11)); if (e_acsl_cst_12 < 0) { e_acsl_fail((char *)"((y >= 1))"); } - mpz_clear((__mpz_struct *)(e_acsl_cst_11)); mpz_clear((__mpz_struct *)(e_acsl_cst_10)); + mpz_clear((__mpz_struct *)(e_acsl_cst_11)); } s = (char *)"toto"; @@ -511,80 +408,68 @@ void main(void) if ("toto" == "titi") { e_acsl_fail((char *)"((\"toto\" != \"titi\"))"); } /*@ assert (5 < 18); */ ; { mpz_t e_acsl_cst_13 ; mpz_t e_acsl_cst_14 ; int e_acsl_cst_15 ; - mpz_init((__mpz_struct *)(e_acsl_cst_13)); - mpz_set_si((__mpz_struct *)(e_acsl_cst_13),(long )5); - mpz_init((__mpz_struct *)(e_acsl_cst_14)); - mpz_set_si((__mpz_struct *)(e_acsl_cst_14),(long )18); + mpz_init_set_si((__mpz_struct *)(e_acsl_cst_13),(long )5); + mpz_init_set_si((__mpz_struct *)(e_acsl_cst_14),(long )18); e_acsl_cst_15 = mpz_cmp((__mpz_struct *)(e_acsl_cst_13), (__mpz_struct *)(e_acsl_cst_14)); if (e_acsl_cst_15 >= 0) { e_acsl_fail((char *)"((5 < 18))"); } - mpz_clear((__mpz_struct *)(e_acsl_cst_14)); mpz_clear((__mpz_struct *)(e_acsl_cst_13)); + mpz_clear((__mpz_struct *)(e_acsl_cst_14)); } /*@ assert (32 > 3); */ ; { mpz_t e_acsl_cst_16 ; mpz_t e_acsl_cst_17 ; int e_acsl_cst_18 ; - mpz_init((__mpz_struct *)(e_acsl_cst_16)); - mpz_set_si((__mpz_struct *)(e_acsl_cst_16),(long )32); - mpz_init((__mpz_struct *)(e_acsl_cst_17)); - mpz_set_si((__mpz_struct *)(e_acsl_cst_17),(long )3); + mpz_init_set_si((__mpz_struct *)(e_acsl_cst_16),(long )32); + mpz_init_set_si((__mpz_struct *)(e_acsl_cst_17),(long )3); e_acsl_cst_18 = mpz_cmp((__mpz_struct *)(e_acsl_cst_16), (__mpz_struct *)(e_acsl_cst_17)); if (e_acsl_cst_18 <= 0) { e_acsl_fail((char *)"((32 > 3))"); } - mpz_clear((__mpz_struct *)(e_acsl_cst_17)); mpz_clear((__mpz_struct *)(e_acsl_cst_16)); + mpz_clear((__mpz_struct *)(e_acsl_cst_17)); } /*@ assert (12 ≤ 13); */ ; { mpz_t e_acsl_cst_19 ; mpz_t e_acsl_cst_20 ; int e_acsl_cst_21 ; - mpz_init((__mpz_struct *)(e_acsl_cst_19)); - mpz_set_si((__mpz_struct *)(e_acsl_cst_19),(long )12); - mpz_init((__mpz_struct *)(e_acsl_cst_20)); - mpz_set_si((__mpz_struct *)(e_acsl_cst_20),(long )13); + mpz_init_set_si((__mpz_struct *)(e_acsl_cst_19),(long )12); + mpz_init_set_si((__mpz_struct *)(e_acsl_cst_20),(long )13); e_acsl_cst_21 = mpz_cmp((__mpz_struct *)(e_acsl_cst_19), (__mpz_struct *)(e_acsl_cst_20)); if (e_acsl_cst_21 > 0) { e_acsl_fail((char *)"((12 <= 13))"); } - mpz_clear((__mpz_struct *)(e_acsl_cst_20)); mpz_clear((__mpz_struct *)(e_acsl_cst_19)); + mpz_clear((__mpz_struct *)(e_acsl_cst_20)); } /*@ assert (123 ≥ 12); */ ; { mpz_t e_acsl_cst_22 ; mpz_t e_acsl_cst_23 ; int e_acsl_cst_24 ; - mpz_init((__mpz_struct *)(e_acsl_cst_22)); - mpz_set_si((__mpz_struct *)(e_acsl_cst_22),(long )123); - mpz_init((__mpz_struct *)(e_acsl_cst_23)); - mpz_set_si((__mpz_struct *)(e_acsl_cst_23),(long )12); + mpz_init_set_si((__mpz_struct *)(e_acsl_cst_22),(long )123); + mpz_init_set_si((__mpz_struct *)(e_acsl_cst_23),(long )12); e_acsl_cst_24 = mpz_cmp((__mpz_struct *)(e_acsl_cst_22), (__mpz_struct *)(e_acsl_cst_23)); if (e_acsl_cst_24 < 0) { e_acsl_fail((char *)"((123 >= 12))"); } - mpz_clear((__mpz_struct *)(e_acsl_cst_23)); mpz_clear((__mpz_struct *)(e_acsl_cst_22)); + mpz_clear((__mpz_struct *)(e_acsl_cst_23)); } /*@ assert (0xff ≡ 0xff); */ ; { mpz_t e_acsl_cst_25 ; mpz_t e_acsl_cst_26 ; int e_acsl_cst_27 ; - mpz_init((__mpz_struct *)(e_acsl_cst_25)); - mpz_set_si((__mpz_struct *)(e_acsl_cst_25),(long )0xff); - mpz_init((__mpz_struct *)(e_acsl_cst_26)); - mpz_set_si((__mpz_struct *)(e_acsl_cst_26),(long )0xff); + mpz_init_set_si((__mpz_struct *)(e_acsl_cst_25),(long )0xff); + mpz_init_set_si((__mpz_struct *)(e_acsl_cst_26),(long )0xff); e_acsl_cst_27 = mpz_cmp((__mpz_struct *)(e_acsl_cst_25), (__mpz_struct *)(e_acsl_cst_26)); if (e_acsl_cst_27 != 0) { e_acsl_fail((char *)"((0xff == 0xff))"); } - mpz_clear((__mpz_struct *)(e_acsl_cst_26)); mpz_clear((__mpz_struct *)(e_acsl_cst_25)); + mpz_clear((__mpz_struct *)(e_acsl_cst_26)); } /*@ assert (1 ≢ 2); */ ; { mpz_t e_acsl_cst_28 ; mpz_t e_acsl_cst_29 ; int e_acsl_cst_30 ; - mpz_init((__mpz_struct *)(e_acsl_cst_28)); - mpz_set_si((__mpz_struct *)(e_acsl_cst_28),(long )1); - mpz_init((__mpz_struct *)(e_acsl_cst_29)); - mpz_set_si((__mpz_struct *)(e_acsl_cst_29),(long )2); + mpz_init_set_si((__mpz_struct *)(e_acsl_cst_28),(long )1); + mpz_init_set_si((__mpz_struct *)(e_acsl_cst_29),(long )2); e_acsl_cst_30 = mpz_cmp((__mpz_struct *)(e_acsl_cst_28), (__mpz_struct *)(e_acsl_cst_29)); if (e_acsl_cst_30 == 0) { e_acsl_fail((char *)"((1 != 2))"); } - mpz_clear((__mpz_struct *)(e_acsl_cst_29)); mpz_clear((__mpz_struct *)(e_acsl_cst_28)); + mpz_clear((__mpz_struct *)(e_acsl_cst_29)); } return; 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 83e60b6ded3a6d54d03502a6fc92e5975df909e8..9be9cc4733af9796cdc9829217d545e63c83b0e0 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 @@ -3,28 +3,19 @@ [value] Initial state computed [value] Values of globals at initialization PROJECT_FILE:73:[value] Assertion got status valid. -[value] computing for function mpz_init <-main. +[value] computing for function mpz_init_set_si <-main. Called from PROJECT_FILE:75. -PROJECT_FILE:75:[value] Function mpz_init: postcondition got status unknown -[value] Done for function mpz_init -[value] computing for function mpz_set_si <-main. +PROJECT_FILE:75:[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:75. -PROJECT_FILE:75:[value] Function mpz_set_si: precondition got status valid -[value] Done for function mpz_set_si -[value] computing for function mpz_init <-main. - Called from PROJECT_FILE:76. -PROJECT_FILE:76:[value] Function mpz_init: postcondition got status unknown -[value] Done for function mpz_init -[value] computing for function mpz_set_si <-main. - Called from PROJECT_FILE:76. -PROJECT_FILE:76:[value] Function mpz_set_si: precondition got status valid -[value] Done for function mpz_set_si +[value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <-main. - Called from PROJECT_FILE:77. -PROJECT_FILE:77:[value] Function mpz_cmp: precondition got status valid + Called from PROJECT_FILE:76. +PROJECT_FILE:76:[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:78. + Called from PROJECT_FILE:77. [value] computing for function eprintf <-e_acsl_fail <-main. Called from PROJECT_FILE:69. [value] Done for function eprintf @@ -35,35 +26,26 @@ PROJECT_FILE:69:[value] Function exit: postcondition got status invalid [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:79. -PROJECT_FILE:79:[value] Function mpz_clear: precondition got status valid + Called from PROJECT_FILE:78. +PROJECT_FILE:78:[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:79. + Called from PROJECT_FILE:78. [value] Done for function mpz_clear -PROJECT_FILE:82:[value] Assertion got status valid. -[value] computing for function mpz_init <-main. - Called from PROJECT_FILE:84. -PROJECT_FILE:84:[value] Function mpz_init: postcondition got status unknown -[value] Done for function mpz_init -[value] computing for function mpz_set_si <-main. - Called from PROJECT_FILE:84. -PROJECT_FILE:84:[value] Function mpz_set_si: precondition got status valid -[value] Done for function mpz_set_si -[value] computing for function mpz_init <-main. - Called from PROJECT_FILE:85. -PROJECT_FILE:85:[value] Function mpz_init: postcondition got status unknown -[value] Done for function mpz_init -[value] computing for function mpz_set_si <-main. - Called from PROJECT_FILE:85. -PROJECT_FILE:85:[value] Function mpz_set_si: precondition got status valid -[value] Done for function mpz_set_si +PROJECT_FILE:81:[value] Assertion got status valid. +[value] computing for function mpz_init_set_si <-main. + Called from PROJECT_FILE:83. +PROJECT_FILE:83:[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:83. +[value] Done for function mpz_init_set_si [value] computing for function mpz_cmp <-main. - Called from PROJECT_FILE:86. -PROJECT_FILE:86:[value] Function mpz_cmp: precondition got status valid + Called from PROJECT_FILE:84. +PROJECT_FILE:84:[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:87. + Called from PROJECT_FILE:85. [value] computing for function eprintf <-e_acsl_fail <-main. Called from PROJECT_FILE:69. [value] Done for function eprintf @@ -73,35 +55,27 @@ PROJECT_FILE:86:[value] Function mpz_cmp: precondition got status valid [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:88. -PROJECT_FILE:88:[value] Function mpz_clear: precondition got status valid + Called from PROJECT_FILE:86. +PROJECT_FILE:86:[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:88. + Called from PROJECT_FILE:86. [value] Done for function mpz_clear -PROJECT_FILE:91:[value] Assertion got status valid. -[value] computing for function mpz_init <-main. - Called from PROJECT_FILE:93. -PROJECT_FILE:93:[value] Function mpz_init: postcondition got status unknown -[value] Done for function mpz_init -[value] computing for function mpz_set_str <-main. - Called from PROJECT_FILE:94. -PROJECT_FILE:94:[value] Function mpz_set_str: precondition got status valid -[value] Done for function mpz_set_str -[value] computing for function mpz_init <-main. - Called from PROJECT_FILE:95. -PROJECT_FILE:95:[value] Function mpz_init: postcondition got status unknown -[value] Done for function mpz_init -[value] computing for function mpz_set_str <-main. - Called from PROJECT_FILE:96. -PROJECT_FILE:96:[value] Function mpz_set_str: precondition got status valid -[value] Done for function mpz_set_str +PROJECT_FILE:89:[value] Assertion got status valid. +[value] computing for function mpz_init_set_str <-main. + Called from PROJECT_FILE:91. +PROJECT_FILE:91:[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:92. +PROJECT_FILE:92:[value] Function mpz_init_set_str: postcondition got status unknown +[value] Done for function mpz_init_set_str [value] computing for function mpz_cmp <-main. - Called from PROJECT_FILE:97. -PROJECT_FILE:97:[value] Function mpz_cmp: precondition got status valid + Called from PROJECT_FILE:93. +PROJECT_FILE:93:[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:99. + Called from PROJECT_FILE:95. [value] computing for function eprintf <-e_acsl_fail <-main. Called from PROJECT_FILE:69. [value] Done for function eprintf @@ -111,18 +85,16 @@ PROJECT_FILE:97:[value] Function mpz_cmp: precondition got status valid [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:100. -PROJECT_FILE:100:[value] Function mpz_clear: precondition got status valid + Called from PROJECT_FILE:96. +PROJECT_FILE:96:[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:100. + Called from PROJECT_FILE:96. [value] Done for function mpz_clear [value] Recording results for main [value] done for function main -[from] Computing for function mpz_init -[from] Done for function mpz_init -[from] Computing for function mpz_set_si -[from] Done for function mpz_set_si +[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 @@ -134,8 +106,8 @@ PROJECT_FILE:69:[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_set_str -[from] Done for function mpz_set_str +[from] Computing for function mpz_init_set_str +[from] Done for function mpz_init_set_str [dominators] computing for function main [dominators] done for function main [value] ====== VALUES COMPUTED ====== @@ -150,18 +122,16 @@ struct __anonstruct___mpz_struct_1 { }; typedef struct __anonstruct___mpz_struct_1 __mpz_struct; typedef __mpz_struct mpz_t[1]; -/*@ ensures \valid(\at(x,Old)); - assigns *x; */ -extern void mpz_init(__mpz_struct * /*[1]*/ x ) ; /*@ requires \valid(x); assigns *x; */ extern void mpz_clear(__mpz_struct * /*[1]*/ x ) ; -/*@ requires \valid(z); +/*@ ensures \valid(\at(z,Old)); assigns *z; */ -extern void mpz_set_si(__mpz_struct * /*[1]*/ z , long n ) ; -/*@ requires \valid(z); +extern void mpz_init_set_si(__mpz_struct * /*[1]*/ z , long n ) ; +/*@ ensures \valid(\at(z,Old)); assigns *z; */ -extern void mpz_set_str(__mpz_struct * /*[1]*/ z , char *str , int base ) ; +extern void mpz_init_set_str(__mpz_struct * /*[1]*/ z , char *str , + int base ) ; /*@ requires \valid(z1); requires \valid(z2); assigns \nothing; */ @@ -183,43 +153,38 @@ void main(void) { /*@ assert (0 ≡ 0); */ ; { mpz_t e_acsl_cst_1 ; mpz_t e_acsl_cst_2 ; int e_acsl_cst_3 ; - mpz_init((__mpz_struct *)(e_acsl_cst_1)); - mpz_set_si((__mpz_struct *)(e_acsl_cst_1),(long )0); - mpz_init((__mpz_struct *)(e_acsl_cst_2)); - mpz_set_si((__mpz_struct *)(e_acsl_cst_2),(long )0); + mpz_init_set_si((__mpz_struct *)(e_acsl_cst_1),(long )0); + mpz_init_set_si((__mpz_struct *)(e_acsl_cst_2),(long )0); e_acsl_cst_3 = mpz_cmp((__mpz_struct *)(e_acsl_cst_1), (__mpz_struct *)(e_acsl_cst_2)); if (e_acsl_cst_3 != 0) { e_acsl_fail((char *)"((0 == 0))"); } - mpz_clear((__mpz_struct *)(e_acsl_cst_2)); mpz_clear((__mpz_struct *)(e_acsl_cst_1)); + mpz_clear((__mpz_struct *)(e_acsl_cst_2)); } /*@ assert (0 ≢ 1); */ ; { mpz_t e_acsl_cst_4 ; mpz_t e_acsl_cst_5 ; int e_acsl_cst_6 ; - mpz_init((__mpz_struct *)(e_acsl_cst_4)); - mpz_set_si((__mpz_struct *)(e_acsl_cst_4),(long )0); - mpz_init((__mpz_struct *)(e_acsl_cst_5)); - mpz_set_si((__mpz_struct *)(e_acsl_cst_5),(long )1); + mpz_init_set_si((__mpz_struct *)(e_acsl_cst_4),(long )0); + mpz_init_set_si((__mpz_struct *)(e_acsl_cst_5),(long )1); e_acsl_cst_6 = mpz_cmp((__mpz_struct *)(e_acsl_cst_4), (__mpz_struct *)(e_acsl_cst_5)); if (e_acsl_cst_6 == 0) { e_acsl_fail((char *)"((0 != 1))"); } - mpz_clear((__mpz_struct *)(e_acsl_cst_5)); mpz_clear((__mpz_struct *)(e_acsl_cst_4)); + mpz_clear((__mpz_struct *)(e_acsl_cst_5)); } /*@ assert (0xfffffffffffffff ≡ 0xfffffffffffffff); */ ; { mpz_t e_acsl_cst_7 ; mpz_t e_acsl_cst_8 ; int e_acsl_cst_9 ; - mpz_init((__mpz_struct *)(e_acsl_cst_7)); - mpz_set_str((__mpz_struct *)(e_acsl_cst_7),(char *)"1152921504606846975", - 10); mpz_init((__mpz_struct *)(e_acsl_cst_8)); - mpz_set_str((__mpz_struct *)(e_acsl_cst_8),(char *)"1152921504606846975", - 10); + mpz_init_set_str((__mpz_struct *)(e_acsl_cst_7), + (char *)"1152921504606846975",10); + mpz_init_set_str((__mpz_struct *)(e_acsl_cst_8), + (char *)"1152921504606846975",10); e_acsl_cst_9 = mpz_cmp((__mpz_struct *)(e_acsl_cst_7), (__mpz_struct *)(e_acsl_cst_8)); if (e_acsl_cst_9 != 0) { e_acsl_fail((char *)"((0xfffffffffffffff == 0xfffffffffffffff))"); - } mpz_clear((__mpz_struct *)(e_acsl_cst_8)); - mpz_clear((__mpz_struct *)(e_acsl_cst_7)); + } mpz_clear((__mpz_struct *)(e_acsl_cst_7)); + mpz_clear((__mpz_struct *)(e_acsl_cst_8)); } return; 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 8815532e731dc82a04b13370f32032cb9c152065..682d6aca84d3478901c3008451fc904ded2e8825 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 @@ -3,127 +3,15 @@ [value] Initial state computed [value] Values of globals at initialization PROJECT_FILE:75:[value] Assertion got status valid. -[value] computing for function mpz_init <-main. - Called from PROJECT_FILE:77. -PROJECT_FILE:77:[value] Function mpz_init: postcondition got status unknown -[value] Done for function mpz_init -[value] computing for function mpz_set_si <-main. - Called from PROJECT_FILE:77. -PROJECT_FILE:77:[value] Function mpz_set_si: precondition got status valid -[value] Done for function mpz_set_si -[value] computing for function mpz_init <-main. - Called from PROJECT_FILE:78. -PROJECT_FILE:78:[value] Function mpz_init: postcondition got status unknown -[value] Done for function mpz_init -[value] computing for function mpz_set_si <-main. - Called from PROJECT_FILE:78. -PROJECT_FILE:78:[value] Function mpz_set_si: precondition got status valid -[value] Done for function mpz_set_si -[value] computing for function mpz_cmp <-main. - Called from PROJECT_FILE:79. -PROJECT_FILE:79:[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:80. -[value] computing for function eprintf <-e_acsl_fail <-main. - Called from PROJECT_FILE:69. -[value] Done for function eprintf -[value] computing for function exit <-e_acsl_fail <-main. - Called from PROJECT_FILE:69. -PROJECT_FILE:69:[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:81. -PROJECT_FILE:81:[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:81. -[value] Done for function mpz_clear -PROJECT_FILE:84:[value] Assertion got status valid. -[value] computing for function mpz_init <-main. - Called from PROJECT_FILE:86. -PROJECT_FILE:86:[value] Function mpz_init: postcondition got status unknown -[value] Done for function mpz_init -[value] computing for function mpz_set_si <-main. - Called from PROJECT_FILE:86. -PROJECT_FILE:86:[value] Function mpz_set_si: precondition got status valid -[value] Done for function mpz_set_si -[value] computing for function mpz_init <-main. - Called from PROJECT_FILE:87. -PROJECT_FILE:87:[value] Function mpz_init: postcondition got status unknown -[value] Done for function mpz_init -[value] computing for function mpz_set_si <-main. - Called from PROJECT_FILE:87. -PROJECT_FILE:87:[value] Function mpz_set_si: precondition got status valid -[value] Done for function mpz_set_si -[value] computing for function mpz_cmp <-main. - Called from PROJECT_FILE:88. -PROJECT_FILE:88:[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:90. -[value] computing for function eprintf <-e_acsl_fail <-main. - Called from PROJECT_FILE:69. -[value] Done for function eprintf -[value] computing for function exit <-e_acsl_fail <-main. - Called from PROJECT_FILE:69. -[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:91. -PROJECT_FILE:91:[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:91. -[value] Done for function mpz_clear +PROJECT_FILE:78:[value] Assertion got status valid. [value] Recording results for main [value] done for function main -[from] Computing for function mpz_init -[from] Done for function mpz_init -[from] Computing for function mpz_set_si -[from] Done for function mpz_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 eprintf <-e_acsl_fail -[from] Done for function eprintf -[from] Computing for function exit <-e_acsl_fail -[from] Done for function exit -PROJECT_FILE:69:[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 [dominators] computing for function main [dominators] done for function main [value] ====== VALUES COMPUTED ====== -[value] Values for function e_acsl_fail: - NON TERMINATING FUNCTION [value] Values for function main: x ∈ {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(\at(x,Old)); - assigns *x; */ -extern void mpz_init(__mpz_struct * /*[1]*/ x ) ; -/*@ requires \valid(x); - assigns *x; */ -extern void mpz_clear(__mpz_struct * /*[1]*/ x ) ; -/*@ requires \valid(z); - assigns *z; */ -extern void mpz_set_si(__mpz_struct * /*[1]*/ z , long n ) ; -/*@ requires \valid(z1); - requires \valid(z2); - assigns \nothing; */ -extern int mpz_cmp(__mpz_struct * /*[1]*/ z1 , __mpz_struct * /*[1]*/ z2 ) ; /*@ terminates \false; ensures \false; assigns \nothing; */ @@ -142,33 +30,11 @@ void main(void) int x ; x = 0; /*@ assert (sizeof(int ) ≡ sizeof(x)); */ ; - { mpz_t e_acsl_cst_1 ; mpz_t e_acsl_cst_2 ; int e_acsl_cst_3 ; - mpz_init((__mpz_struct *)(e_acsl_cst_1)); - mpz_set_si((__mpz_struct *)(e_acsl_cst_1),(long )4); - mpz_init((__mpz_struct *)(e_acsl_cst_2)); - mpz_set_si((__mpz_struct *)(e_acsl_cst_2),(long )4); - e_acsl_cst_3 = mpz_cmp((__mpz_struct *)(e_acsl_cst_1), - (__mpz_struct *)(e_acsl_cst_2)); - if (e_acsl_cst_3 != 0) { - e_acsl_fail((char *)"((sizeof(int ) == sizeof(x)))"); - } mpz_clear((__mpz_struct *)(e_acsl_cst_2)); - mpz_clear((__mpz_struct *)(e_acsl_cst_1)); - } - + if (4 != 4) { e_acsl_fail((char *)"((sizeof(int ) == sizeof(x)))"); } /*@ assert (sizeof("totototototo") ≡ sizeof(char *)); */ ; - { mpz_t e_acsl_cst_4 ; mpz_t e_acsl_cst_5 ; int e_acsl_cst_6 ; - mpz_init((__mpz_struct *)(e_acsl_cst_4)); - mpz_set_si((__mpz_struct *)(e_acsl_cst_4),(long )4); - mpz_init((__mpz_struct *)(e_acsl_cst_5)); - mpz_set_si((__mpz_struct *)(e_acsl_cst_5),(long )4); - e_acsl_cst_6 = mpz_cmp((__mpz_struct *)(e_acsl_cst_4), - (__mpz_struct *)(e_acsl_cst_5)); - if (e_acsl_cst_6 != 0) { - e_acsl_fail((char *)"((sizeof(\"totototototo\") == sizeof(char *)))"); - } mpz_clear((__mpz_struct *)(e_acsl_cst_5)); - mpz_clear((__mpz_struct *)(e_acsl_cst_4)); + if (4 != 4) { + e_acsl_fail((char *)"((sizeof(\"totototototo\") == sizeof(char *)))"); } - return; } diff --git a/src/plugins/e-acsl/visit.ml b/src/plugins/e-acsl/visit.ml index e80a2ca84184250ef9f108860111a9f53dc580a3..306492bd15eb30268f75cad3cf2779d0e715aba8 100644 --- a/src/plugins/e-acsl/visit.ml +++ b/src/plugins/e-acsl/visit.ml @@ -65,14 +65,14 @@ let mk_if e p = (* ************************************************************************** *) module Mpz : sig - val t_ty: typ (* type "mpz_t" *) + val t: typ (* type "mpz_t" *) val is_now_referenced: unit -> unit (* one variable "mpz_t" now exists *) val is_t: typ -> bool (* is the type equal to "mpz_t"? *) val init: varinfo -> stmt (* build stmt "mpz_init(v)" *) val clear: varinfo -> stmt (* build stmt "mpz_clear(v)" *) - val set: varinfo -> exp -> stmt -(* build stmt "mpz_set_*(v, e)" with the good function 'set' according to the - type of e *) + val init_set: varinfo -> exp -> stmt +(* build stmt "mpz_init_set_*(v, e)" with the good function 'set' according to + the type of e *) end = struct let t_torig = @@ -83,26 +83,26 @@ end = struct let is_now_referenced () = t_torig.treferenced <- true - let t_ty = TNamed(t_torig, []) - let is_t ty = Cil_datatype.Typ.equal ty t_ty + let t = TNamed(t_torig, []) + let is_t ty = Cil_datatype.Typ.equal ty t let apply_on_var funname v = mk_call ("mpz_" ^ funname) [ new_lval v ] let init = apply_on_var "init" let clear = apply_on_var "clear" - let set v e = + let init_set v e = let fname, args = match typeOf e with | TInt((IBool | IChar | IUChar | IUInt | IUShort | IULong), _) -> - "set_ui", [ e ] - | TInt((ISChar | IShort | IInt | ILong), _) -> "set_si", [ e ] + "ui", [ e ] + | TInt((ISChar | IShort | IInt | ILong), _) -> "si", [ e ] | TInt((ILongLong | IULongLong), _) -> assert false | TPtr(TInt(IChar, _), _) -> - "set_str", + "str", (* decimal base for the number given as string *) [ e; integer ~loc:unknown_loc 10 ] | _ -> assert false in - mk_call ("mpz_" ^ fname) (new_lval v :: args) + mk_call ("mpz_init_set_" ^ fname) (new_lval v :: args) end @@ -111,9 +111,8 @@ end (* ************************************************************************** *) module New_vars: sig - (* constant option: mpz_t constant associated to the varinfo at init time *) - val push: typ -> exp option -> varinfo - val finalize: unit -> (varinfo * exp option) list + val push: typ -> (varinfo -> stmt list) -> varinfo + val finalize: unit -> (varinfo * stmt list * bool) list end = struct (* the finalizer resets the counter in order to keep it small. However, Cil @@ -126,13 +125,10 @@ end = struct let var_cpt = ref 0 let vlist = ref [] - let push ty e = - if Mpz.is_t ty then begin - assert (e <> None); - Mpz.is_now_referenced () - end else - assert (e = None); + let push ty mk_stmts = incr var_cpt; + let is_t = Mpz.is_t ty in + if is_t then Mpz.is_now_referenced (); let v = makeVarinfo ~logic:false @@ -142,7 +138,7 @@ end = struct ("e_acsl_cst_" ^ string_of_int !var_cpt) ty in - vlist := (v, e) :: !vlist; + vlist := (v, mk_stmts v, is_t) :: !vlist; v let finalize () = @@ -199,9 +195,20 @@ let tlval_to_lval = function | TVar { lv_origin = Some v }, TNoOffset -> Var v, NoOffset | _ -> not_yet "complex left value" -let rec nocheck_term_to_exp t = match t.term_node with - | TConst c -> constant_to_exp c - | TLval lv -> new_exp ~loc:unknown_loc (Lval (tlval_to_lval lv)) +let wrap_leaf e = function + | Ctype _ -> e + | Ltype _ -> not_yet "term from an user defined type" + | Lvar _ -> not_yet "polymorphic term" + | Linteger -> + let v = New_vars.push Mpz.t (fun v -> [ Mpz.init_set v e ]) in + new_lval v + | Lreal -> not_yet "real number" + | Larrow _ -> not_yet "logic function" + +let rec term_to_exp t = match t.term_node with + | TConst c -> wrap_leaf (constant_to_exp c) t.term_type + | TLval lv -> + wrap_leaf (new_exp ~loc:unknown_loc (Lval (tlval_to_lval lv))) t.term_type | TSizeOf ty -> sizeOf ~loc:unknown_loc ty | TSizeOfE t -> let e = term_to_exp t in @@ -239,17 +246,6 @@ let rec nocheck_term_to_exp t = match t.term_node with | Trange _ -> not_yet "range" | Tlet _ -> not_yet "let binding" -and term_to_exp t = match t.term_type with - | Ctype _ -> nocheck_term_to_exp t - | Ltype _ -> not_yet "term from an user defined type" - | Lvar _ -> not_yet "polymorphic term" - | Linteger -> - let e = nocheck_term_to_exp t in - let v = New_vars.push Mpz.t_ty (Some e) in - new_lval v - | Lreal -> not_yet "real number" - | Larrow _ -> not_yet "logic function" - let relation_to_revbinop = function | Rlt -> Ge | Rgt -> Le @@ -271,12 +267,16 @@ let rec named_predicate_to_revexp p = match p.content with let e2 = term_to_exp t2 in if Mpz.is_t (typeOf e1) then begin assert (Mpz.is_t (typeOf e2)); - let v = New_vars.push intType None in - let result = var v in - New_block.push (mk_call ~result "mpz_cmp" [ e1; e2 ]); + let v = + New_vars.push + intType + (fun v -> + let result = var v in + [ mk_call ~result "mpz_cmp" [ e1; e2 ] ]) + in let bop = BinOp(bop, - new_exp unknown_loc (Lval result), + new_exp unknown_loc (Lval (var v)), zero unknown_loc, intType) in @@ -372,20 +372,17 @@ class e_acsl_visitor prj generate = object assert generate; let mk_block stmt = let b = New_block.finalize stmt in - (* [TODO] efficiency could be improved *) - gen_vars <- + let vars, clears = List.fold_left - (fun acc (v, e) -> - b.blocals <- v :: b.blocals; - Extlib.may - (fun e -> - let s1 = Mpz.init v in - let s2 = Mpz.set v e in - b.bstmts <- s1 :: s2 :: b.bstmts @ [ Mpz.clear v ]) - e; - v :: acc) - [] - new_vars; + (fun (vars, clears) (v, stmts, must_clear) -> + b.blocals <- v :: b.blocals; + b.bstmts <- stmts @ b.bstmts; + v :: vars, if must_clear then Mpz.clear v :: clears else clears) + ([], []) + new_vars + in + gen_vars <- vars; + b.bstmts <- b.bstmts @ clears; mkStmt ~valid_sid:true (Block b) in ChangeDoChildrenPost(stmt, mk_block)