diff --git a/src/plugins/e-acsl/tests/gmp/functions_rec.c b/src/plugins/e-acsl/tests/gmp/functions_rec.c index 3619ab7c793d4083b6b843a7b02bd2eaa835c380..76c60912194b4481bc8e6f06bb94b8f522b6a2d4 100644 --- a/src/plugins/e-acsl/tests/gmp/functions_rec.c +++ b/src/plugins/e-acsl/tests/gmp/functions_rec.c @@ -1,5 +1,6 @@ /* run.config COMMENT: recursive logic functions + STDOPT: +"-eva-ignore-recursive-calls" */ /*@ logic integer f1(integer n) = diff --git a/src/plugins/e-acsl/tests/gmp/oracle/functions_rec.0.res.oracle b/src/plugins/e-acsl/tests/gmp/oracle/functions_rec.0.res.oracle index c7a7f721fbe4ce2b251aafc6e540ffadc82ee415..cbf74d13ac79e1568bba0f82bc91e82493871cf4 100644 --- a/src/plugins/e-acsl/tests/gmp/oracle/functions_rec.0.res.oracle +++ b/src/plugins/e-acsl/tests/gmp/oracle/functions_rec.0.res.oracle @@ -10,78 +10,78 @@ __e_acsl_math_HUGE_VALF ∈ [-3.40282346639e+38 .. 3.40282346639e+38] __e_acsl_math_INFINITY ∈ [-1.79769313486e+308 .. 1.79769313486e+308] [eva] using specification for function __e_acsl_memory_init -[eva] tests/gmp/functions_rec.c:25: +[eva] tests/gmp/functions_rec.c:26: cannot evaluate ACSL term, unsupported ACSL construct: logic function f2 -[eva:alarm] tests/gmp/functions_rec.c:25: Warning: assertion got status unknown. -[eva] tests/gmp/functions_rec.c:9: Warning: +[eva:alarm] tests/gmp/functions_rec.c:26: Warning: assertion got status unknown. +[eva] tests/gmp/functions_rec.c:10: Warning: recursive call during value analysis - of __gen_e_acsl_f2_2 (__gen_e_acsl_f2_2 <- __gen_e_acsl_f2_2 :: tests/gmp/functions_rec.c:9 <- - __gen_e_acsl_f2 :: tests/gmp/functions_rec.c:25 <- + of __gen_e_acsl_f2_2 (__gen_e_acsl_f2_2 <- __gen_e_acsl_f2_2 :: tests/gmp/functions_rec.c:10 <- + __gen_e_acsl_f2 :: tests/gmp/functions_rec.c:26 <- main). Assuming the call has no effect. The analysis will be unsound. [eva] using specification for function __gen_e_acsl_f2_2 -[eva] tests/gmp/functions_rec.c:9: Warning: +[eva] tests/gmp/functions_rec.c:10: Warning: recursive call during value analysis - of __gen_e_acsl_f2_2 (__gen_e_acsl_f2_2 <- __gen_e_acsl_f2_2 :: tests/gmp/functions_rec.c:9 <- - __gen_e_acsl_f2 :: tests/gmp/functions_rec.c:25 <- + of __gen_e_acsl_f2_2 (__gen_e_acsl_f2_2 <- __gen_e_acsl_f2_2 :: tests/gmp/functions_rec.c:10 <- + __gen_e_acsl_f2 :: tests/gmp/functions_rec.c:26 <- main). Assuming the call has no effect. The analysis will be unsound. -[eva] tests/gmp/functions_rec.c:9: Warning: +[eva] tests/gmp/functions_rec.c:10: Warning: recursive call during value analysis - of __gen_e_acsl_f2_2 (__gen_e_acsl_f2_2 <- __gen_e_acsl_f2_2 :: tests/gmp/functions_rec.c:9 <- - __gen_e_acsl_f2 :: tests/gmp/functions_rec.c:25 <- + of __gen_e_acsl_f2_2 (__gen_e_acsl_f2_2 <- __gen_e_acsl_f2_2 :: tests/gmp/functions_rec.c:10 <- + __gen_e_acsl_f2 :: tests/gmp/functions_rec.c:26 <- main). Assuming the call has no effect. The analysis will be unsound. [eva] using specification for function __e_acsl_assert -[eva:alarm] tests/gmp/functions_rec.c:9: Warning: +[eva:alarm] tests/gmp/functions_rec.c:10: Warning: function __e_acsl_assert: precondition got status unknown. -[eva:alarm] tests/gmp/functions_rec.c:9: Warning: +[eva:alarm] tests/gmp/functions_rec.c:10: Warning: division by zero. assert __gen_e_acsl_f2_8 ≢ 0; -[eva:alarm] tests/gmp/functions_rec.c:9: Warning: +[eva:alarm] tests/gmp/functions_rec.c:10: Warning: signed overflow. assert -2147483648 ≤ __gen_e_acsl_f2_4 * __gen_e_acsl_f2_6; -[eva:alarm] tests/gmp/functions_rec.c:9: Warning: +[eva:alarm] tests/gmp/functions_rec.c:10: Warning: signed overflow. assert __gen_e_acsl_f2_4 * __gen_e_acsl_f2_6 ≤ 2147483647; -[eva:alarm] tests/gmp/functions_rec.c:9: Warning: +[eva:alarm] tests/gmp/functions_rec.c:10: Warning: signed overflow. assert (int)(__gen_e_acsl_f2_4 * __gen_e_acsl_f2_6) / __gen_e_acsl_f2_8 ≤ 2147483647; -[eva:alarm] tests/gmp/functions_rec.c:9: Warning: +[eva:alarm] tests/gmp/functions_rec.c:10: Warning: division by zero. assert __gen_e_acsl_f2_13 ≢ 0; -[eva:alarm] tests/gmp/functions_rec.c:9: Warning: +[eva:alarm] tests/gmp/functions_rec.c:10: Warning: signed overflow. assert -2147483648 ≤ __gen_e_acsl_f2_9 * __gen_e_acsl_f2_11; -[eva:alarm] tests/gmp/functions_rec.c:9: Warning: +[eva:alarm] tests/gmp/functions_rec.c:10: Warning: signed overflow. assert __gen_e_acsl_f2_9 * __gen_e_acsl_f2_11 ≤ 2147483647; -[eva:alarm] tests/gmp/functions_rec.c:9: Warning: +[eva:alarm] tests/gmp/functions_rec.c:10: Warning: signed overflow. assert (int)(__gen_e_acsl_f2_9 * __gen_e_acsl_f2_11) / __gen_e_acsl_f2_13 ≤ 2147483647; -[eva:alarm] tests/gmp/functions_rec.c:25: Warning: +[eva:alarm] tests/gmp/functions_rec.c:26: Warning: function __e_acsl_assert: precondition got status unknown. -[eva] tests/gmp/functions_rec.c:27: +[eva] tests/gmp/functions_rec.c:28: cannot evaluate ACSL term, unsupported ACSL construct: logic function f3 -[eva:alarm] tests/gmp/functions_rec.c:27: Warning: assertion got status unknown. -[eva] tests/gmp/functions_rec.c:13: Warning: +[eva:alarm] tests/gmp/functions_rec.c:28: Warning: assertion got status unknown. +[eva] tests/gmp/functions_rec.c:14: Warning: recursive call during value analysis - of __gen_e_acsl_f3_2 (__gen_e_acsl_f3_2 <- __gen_e_acsl_f3_2 :: tests/gmp/functions_rec.c:13 <- - __gen_e_acsl_f3 :: tests/gmp/functions_rec.c:27 <- + of __gen_e_acsl_f3_2 (__gen_e_acsl_f3_2 <- __gen_e_acsl_f3_2 :: tests/gmp/functions_rec.c:14 <- + __gen_e_acsl_f3 :: tests/gmp/functions_rec.c:28 <- main). Assuming the call has no effect. The analysis will be unsound. [eva] using specification for function __gen_e_acsl_f3_2 -[eva] tests/gmp/functions_rec.c:29: +[eva] tests/gmp/functions_rec.c:30: cannot evaluate ACSL term, unsupported ACSL construct: logic function f4 -[eva:alarm] tests/gmp/functions_rec.c:29: Warning: assertion got status unknown. -[eva] tests/gmp/functions_rec.c:16: Warning: +[eva:alarm] tests/gmp/functions_rec.c:30: Warning: assertion got status unknown. +[eva] tests/gmp/functions_rec.c:17: Warning: recursive call during value analysis - of __gen_e_acsl_f4_2 (__gen_e_acsl_f4_2 <- __gen_e_acsl_f4_2 :: tests/gmp/functions_rec.c:16 <- - __gen_e_acsl_f4 :: tests/gmp/functions_rec.c:29 <- + of __gen_e_acsl_f4_2 (__gen_e_acsl_f4_2 <- __gen_e_acsl_f4_2 :: tests/gmp/functions_rec.c:17 <- + __gen_e_acsl_f4 :: tests/gmp/functions_rec.c:30 <- main). Assuming the call has no effect. The analysis will be unsound. [eva] using specification for function __gen_e_acsl_f4_2 -[eva:alarm] tests/gmp/functions_rec.c:29: Warning: +[eva:alarm] tests/gmp/functions_rec.c:30: Warning: function __e_acsl_assert: precondition got status unknown. [eva] done for function main diff --git a/src/plugins/e-acsl/tests/gmp/oracle/functions_rec.1.res.oracle b/src/plugins/e-acsl/tests/gmp/oracle/functions_rec.1.res.oracle index 723a7954d81f95b1f8de0ff2545b2d17ca1245ce..ad15ac476ccad3eb4c1c7c322456de28b5dc3c3f 100644 --- a/src/plugins/e-acsl/tests/gmp/oracle/functions_rec.1.res.oracle +++ b/src/plugins/e-acsl/tests/gmp/oracle/functions_rec.1.res.oracle @@ -10,107 +10,107 @@ __e_acsl_math_HUGE_VALF ∈ [-3.40282346639e+38 .. 3.40282346639e+38] __e_acsl_math_INFINITY ∈ [-1.79769313486e+308 .. 1.79769313486e+308] [eva] using specification for function __e_acsl_memory_init -[eva] tests/gmp/functions_rec.c:25: +[eva] tests/gmp/functions_rec.c:26: cannot evaluate ACSL term, unsupported ACSL construct: logic function f2 -[eva:alarm] tests/gmp/functions_rec.c:25: Warning: assertion got status unknown. +[eva:alarm] tests/gmp/functions_rec.c:26: Warning: assertion got status unknown. [eva] using specification for function __gmpz_init_set_si [eva] using specification for function __gmpz_cmp [eva] using specification for function __gmpz_init_set [eva] using specification for function __gmpz_clear [eva] using specification for function __gmpz_init [eva] using specification for function __gmpz_sub -[eva:alarm] tests/gmp/functions_rec.c:9: Warning: +[eva:alarm] tests/gmp/functions_rec.c:10: Warning: accessing uninitialized left-value. assert \initialized((__e_acsl_mpz_struct *)__gen_e_acsl_sub); -[eva] tests/gmp/functions_rec.c:9: Warning: +[eva] tests/gmp/functions_rec.c:10: Warning: recursive call during value analysis - of __gen_e_acsl_f2_2 (__gen_e_acsl_f2_2 <- __gen_e_acsl_f2_2 :: tests/gmp/functions_rec.c:9 <- - __gen_e_acsl_f2 :: tests/gmp/functions_rec.c:25 <- + of __gen_e_acsl_f2_2 (__gen_e_acsl_f2_2 <- __gen_e_acsl_f2_2 :: tests/gmp/functions_rec.c:10 <- + __gen_e_acsl_f2 :: tests/gmp/functions_rec.c:26 <- main). Assuming the call has no effect. The analysis will be unsound. -[eva:alarm] tests/gmp/functions_rec.c:9: Warning: +[eva:alarm] tests/gmp/functions_rec.c:10: Warning: accessing uninitialized left-value. assert \initialized((__e_acsl_mpz_struct *)__gen_e_acsl_sub_2); [eva] using specification for function __gen_e_acsl_f2_2 -[eva] tests/gmp/functions_rec.c:9: Warning: +[eva] tests/gmp/functions_rec.c:10: Warning: recursive call during value analysis - of __gen_e_acsl_f2_2 (__gen_e_acsl_f2_2 <- __gen_e_acsl_f2_2 :: tests/gmp/functions_rec.c:9 <- - __gen_e_acsl_f2 :: tests/gmp/functions_rec.c:25 <- + of __gen_e_acsl_f2_2 (__gen_e_acsl_f2_2 <- __gen_e_acsl_f2_2 :: tests/gmp/functions_rec.c:10 <- + __gen_e_acsl_f2 :: tests/gmp/functions_rec.c:26 <- main). Assuming the call has no effect. The analysis will be unsound. -[eva:alarm] tests/gmp/functions_rec.c:9: Warning: +[eva:alarm] tests/gmp/functions_rec.c:10: Warning: accessing uninitialized left-value. assert \initialized((__e_acsl_mpz_struct *)__gen_e_acsl_sub_3); [eva] using specification for function __gmpz_mul -[eva] tests/gmp/functions_rec.c:9: Warning: +[eva] tests/gmp/functions_rec.c:10: Warning: recursive call during value analysis - of __gen_e_acsl_f2_2 (__gen_e_acsl_f2_2 <- __gen_e_acsl_f2_2 :: tests/gmp/functions_rec.c:9 <- - __gen_e_acsl_f2 :: tests/gmp/functions_rec.c:25 <- + of __gen_e_acsl_f2_2 (__gen_e_acsl_f2_2 <- __gen_e_acsl_f2_2 :: tests/gmp/functions_rec.c:10 <- + __gen_e_acsl_f2 :: tests/gmp/functions_rec.c:26 <- main). Assuming the call has no effect. The analysis will be unsound. -[eva:alarm] tests/gmp/functions_rec.c:9: Warning: +[eva:alarm] tests/gmp/functions_rec.c:10: Warning: accessing uninitialized left-value. assert \initialized((__e_acsl_mpz_struct *)__gen_e_acsl_sub_4); [eva] :0: cannot evaluate ACSL term, unsupported ACSL construct: logic function f2 -[eva:alarm] tests/gmp/functions_rec.c:9: Warning: +[eva:alarm] tests/gmp/functions_rec.c:10: Warning: assertion 'E_ACSL' got status unknown. [eva] using specification for function __e_acsl_assert -[eva:alarm] tests/gmp/functions_rec.c:9: Warning: +[eva:alarm] tests/gmp/functions_rec.c:10: Warning: function __e_acsl_assert: precondition got status unknown. [eva] using specification for function __gmpz_tdiv_q -[eva:alarm] tests/gmp/functions_rec.c:9: Warning: +[eva:alarm] tests/gmp/functions_rec.c:10: Warning: accessing uninitialized left-value. assert \initialized((__e_acsl_mpz_struct *)__gen_e_acsl_sub_5); -[eva:alarm] tests/gmp/functions_rec.c:9: Warning: +[eva:alarm] tests/gmp/functions_rec.c:10: Warning: accessing uninitialized left-value. assert \initialized((__e_acsl_mpz_struct *)__gen_e_acsl_sub_6); -[eva:alarm] tests/gmp/functions_rec.c:25: Warning: +[eva:alarm] tests/gmp/functions_rec.c:26: Warning: function __e_acsl_assert: precondition got status unknown. -[eva] tests/gmp/functions_rec.c:27: +[eva] tests/gmp/functions_rec.c:28: cannot evaluate ACSL term, unsupported ACSL construct: logic function f3 -[eva:alarm] tests/gmp/functions_rec.c:27: Warning: assertion got status unknown. -[eva:alarm] tests/gmp/functions_rec.c:13: Warning: +[eva:alarm] tests/gmp/functions_rec.c:28: Warning: assertion got status unknown. +[eva:alarm] tests/gmp/functions_rec.c:14: Warning: accessing uninitialized left-value. assert \initialized((__e_acsl_mpz_struct *)__gen_e_acsl_sub_7); [eva] using specification for function __gmpz_get_si -[eva] tests/gmp/functions_rec.c:13: Warning: +[eva] tests/gmp/functions_rec.c:14: Warning: recursive call during value analysis - of __gen_e_acsl_f3_2 (__gen_e_acsl_f3_2 <- __gen_e_acsl_f3_2 :: tests/gmp/functions_rec.c:13 <- - __gen_e_acsl_f3 :: tests/gmp/functions_rec.c:27 <- + of __gen_e_acsl_f3_2 (__gen_e_acsl_f3_2 <- __gen_e_acsl_f3_2 :: tests/gmp/functions_rec.c:14 <- + __gen_e_acsl_f3 :: tests/gmp/functions_rec.c:28 <- main). Assuming the call has no effect. The analysis will be unsound. -[eva:alarm] tests/gmp/functions_rec.c:13: Warning: +[eva:alarm] tests/gmp/functions_rec.c:14: Warning: accessing uninitialized left-value. assert \initialized((__e_acsl_mpz_struct *)__gen_e_acsl_sub_8); [eva] using specification for function __gen_e_acsl_f3_2 [eva] using specification for function __gmpz_add -[eva:alarm] tests/gmp/functions_rec.c:13: Warning: +[eva:alarm] tests/gmp/functions_rec.c:14: Warning: accessing uninitialized left-value. assert \initialized((__e_acsl_mpz_struct *)__gen_e_acsl_add); -[eva:alarm] tests/gmp/functions_rec.c:13: Warning: +[eva:alarm] tests/gmp/functions_rec.c:14: Warning: accessing uninitialized left-value. assert \initialized((__e_acsl_mpz_struct *)__gen_e_acsl_add_2); [eva] using specification for function __gmpz_neg -[eva:alarm] tests/gmp/functions_rec.c:27: Warning: +[eva:alarm] tests/gmp/functions_rec.c:28: Warning: function __e_acsl_assert: precondition got status unknown. -[eva] tests/gmp/functions_rec.c:29: +[eva] tests/gmp/functions_rec.c:30: cannot evaluate ACSL term, unsupported ACSL construct: logic function f4 -[eva:alarm] tests/gmp/functions_rec.c:29: Warning: assertion got status unknown. -[eva:alarm] tests/gmp/functions_rec.c:16: Warning: +[eva:alarm] tests/gmp/functions_rec.c:30: Warning: assertion got status unknown. +[eva:alarm] tests/gmp/functions_rec.c:17: Warning: accessing uninitialized left-value. assert \initialized((__e_acsl_mpz_struct *)__gen_e_acsl_add_3); -[eva] tests/gmp/functions_rec.c:16: Warning: +[eva] tests/gmp/functions_rec.c:17: Warning: recursive call during value analysis - of __gen_e_acsl_f4_2 (__gen_e_acsl_f4_2 <- __gen_e_acsl_f4_2 :: tests/gmp/functions_rec.c:16 <- - __gen_e_acsl_f4 :: tests/gmp/functions_rec.c:29 <- + of __gen_e_acsl_f4_2 (__gen_e_acsl_f4_2 <- __gen_e_acsl_f4_2 :: tests/gmp/functions_rec.c:17 <- + __gen_e_acsl_f4 :: tests/gmp/functions_rec.c:30 <- main). Assuming the call has no effect. The analysis will be unsound. -[eva:alarm] tests/gmp/functions_rec.c:16: Warning: +[eva:alarm] tests/gmp/functions_rec.c:17: Warning: accessing uninitialized left-value. assert \initialized((__e_acsl_mpz_struct *)__gen_e_acsl_add_4); [eva] using specification for function __gen_e_acsl_f4_2 [eva] using specification for function __gmpz_init_set_ui -[eva:alarm] tests/gmp/functions_rec.c:29: Warning: +[eva:alarm] tests/gmp/functions_rec.c:30: Warning: function __e_acsl_assert: precondition got status unknown. [eva] done for function main diff --git a/src/plugins/e-acsl/tests/gmp/oracle/gen_functions_rec.c b/src/plugins/e-acsl/tests/gmp/oracle/gen_functions_rec.c index 5c263c6479ea5fb876a26a785e731823d86d6680..0fa4a22a630c4d80f8f44b38a7c561a6b5e93f13 100644 --- a/src/plugins/e-acsl/tests/gmp/oracle/gen_functions_rec.c +++ b/src/plugins/e-acsl/tests/gmp/oracle/gen_functions_rec.c @@ -39,26 +39,60 @@ int main(void) int __gen_e_acsl_f2_14; __gen_e_acsl_f2_14 = __gen_e_acsl_f2(7); __e_acsl_assert(__gen_e_acsl_f2_14 == 1,(char *)"Assertion", - (char *)"main",(char *)"f2(7) == 1",25); + (char *)"main",(char *)"f2(7) == 1",26); } /*@ assert f3(6) ≡ -5; */ { int __gen_e_acsl_f3_6; __gen_e_acsl_f3_6 = __gen_e_acsl_f3(6); __e_acsl_assert(__gen_e_acsl_f3_6 == -5,(char *)"Assertion", - (char *)"main",(char *)"f3(6) == -5",27); + (char *)"main",(char *)"f3(6) == -5",28); } /*@ assert f4(9) > 0; */ { unsigned long __gen_e_acsl_f4_6; __gen_e_acsl_f4_6 = __gen_e_acsl_f4(9); __e_acsl_assert(__gen_e_acsl_f4_6 > 0UL,(char *)"Assertion", - (char *)"main",(char *)"f4(9) > 0",29); + (char *)"main",(char *)"f4(9) > 0",30); } __retres = 0; return __retres; } +unsigned long __gen_e_acsl_f4_2(long n) +{ + unsigned long __gen_e_acsl_if_6; + if (n < 100L) { + unsigned long __gen_e_acsl_f4_4; + __gen_e_acsl_f4_4 = __gen_e_acsl_f4_2(n + 1L); + __gen_e_acsl_if_6 = __gen_e_acsl_f4_4; + } + else { + unsigned long __gen_e_acsl_if_5; + if (n < 9223372036854775807L) __gen_e_acsl_if_5 = 9223372036854775807UL; + else __gen_e_acsl_if_5 = 6UL; + __gen_e_acsl_if_6 = __gen_e_acsl_if_5; + } + return __gen_e_acsl_if_6; +} + +unsigned long __gen_e_acsl_f4(int n) +{ + unsigned long __gen_e_acsl_if_8; + if (n < 100) { + unsigned long __gen_e_acsl_f4_5; + __gen_e_acsl_f4_5 = __gen_e_acsl_f4_2(n + 1L); + __gen_e_acsl_if_8 = __gen_e_acsl_f4_5; + } + else { + unsigned long __gen_e_acsl_if_7; + if ((long)n < 9223372036854775807L) __gen_e_acsl_if_7 = 9223372036854775807UL; + else __gen_e_acsl_if_7 = 6UL; + __gen_e_acsl_if_8 = __gen_e_acsl_if_7; + } + return __gen_e_acsl_if_8; +} + int __gen_e_acsl_f2_2(long n) { int __gen_e_acsl_if; @@ -71,7 +105,7 @@ int __gen_e_acsl_f2_2(long n) __gen_e_acsl_f2_6 = __gen_e_acsl_f2_2(n - 2L); __gen_e_acsl_f2_8 = __gen_e_acsl_f2_2(n - 3L); __e_acsl_assert(__gen_e_acsl_f2_8 != 0,(char *)"RTE",(char *)"f2_2", - (char *)"division_by_zero: __gen_e_acsl_f2_8 != 0",9); + (char *)"division_by_zero: __gen_e_acsl_f2_8 != 0",10); /*@ assert Eva: division_by_zero: __gen_e_acsl_f2_8 ≢ 0; */ /*@ assert Eva: signed_overflow: @@ -103,7 +137,7 @@ int __gen_e_acsl_f2(int n) __gen_e_acsl_f2_11 = __gen_e_acsl_f2_2(n - 2L); __gen_e_acsl_f2_13 = __gen_e_acsl_f2_2(n - 3L); __e_acsl_assert(__gen_e_acsl_f2_13 != 0,(char *)"RTE",(char *)"f2", - (char *)"division_by_zero: __gen_e_acsl_f2_13 != 0",9); + (char *)"division_by_zero: __gen_e_acsl_f2_13 != 0",10); /*@ assert Eva: division_by_zero: __gen_e_acsl_f2_13 ≢ 0; */ /*@ assert Eva: signed_overflow: @@ -171,38 +205,4 @@ int __gen_e_acsl_f3(int n) return __gen_e_acsl_if_4; } -unsigned long __gen_e_acsl_f4_2(long n) -{ - unsigned long __gen_e_acsl_if_6; - if (n < 100L) { - unsigned long __gen_e_acsl_f4_4; - __gen_e_acsl_f4_4 = __gen_e_acsl_f4_2(n + 1L); - __gen_e_acsl_if_6 = __gen_e_acsl_f4_4; - } - else { - unsigned long __gen_e_acsl_if_5; - if (n < 9223372036854775807L) __gen_e_acsl_if_5 = 9223372036854775807UL; - else __gen_e_acsl_if_5 = 6UL; - __gen_e_acsl_if_6 = __gen_e_acsl_if_5; - } - return __gen_e_acsl_if_6; -} - -unsigned long __gen_e_acsl_f4(int n) -{ - unsigned long __gen_e_acsl_if_8; - if (n < 100) { - unsigned long __gen_e_acsl_f4_5; - __gen_e_acsl_f4_5 = __gen_e_acsl_f4_2(n + 1L); - __gen_e_acsl_if_8 = __gen_e_acsl_f4_5; - } - else { - unsigned long __gen_e_acsl_if_7; - if ((long)n < 9223372036854775807L) __gen_e_acsl_if_7 = 9223372036854775807UL; - else __gen_e_acsl_if_7 = 6UL; - __gen_e_acsl_if_8 = __gen_e_acsl_if_7; - } - return __gen_e_acsl_if_8; -} - diff --git a/src/plugins/e-acsl/tests/gmp/oracle/gen_functions_rec2.c b/src/plugins/e-acsl/tests/gmp/oracle/gen_functions_rec2.c index b7ac1c6bd4b51843d645e4b1f469c5541232d848..c13d6d1e49b1ef2fae4f1c8c5fb0922a23127c3f 100644 --- a/src/plugins/e-acsl/tests/gmp/oracle/gen_functions_rec2.c +++ b/src/plugins/e-acsl/tests/gmp/oracle/gen_functions_rec2.c @@ -47,7 +47,7 @@ int main(void) __gen_e_acsl_eq = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_f2_14), (__e_acsl_mpz_struct const *)(__gen_e_acsl__13)); __e_acsl_assert(__gen_e_acsl_eq == 0,(char *)"Assertion",(char *)"main", - (char *)"f2(7) == 1",25); + (char *)"f2(7) == 1",26); __gmpz_clear(__gen_e_acsl_f2_14); __gmpz_clear(__gen_e_acsl__13); } @@ -65,7 +65,7 @@ int main(void) __gen_e_acsl_eq_2 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_f3_6), (__e_acsl_mpz_struct const *)(__gen_e_acsl_neg)); __e_acsl_assert(__gen_e_acsl_eq_2 == 0,(char *)"Assertion", - (char *)"main",(char *)"f3(6) == -5",27); + (char *)"main",(char *)"f3(6) == -5",28); __gmpz_clear(__gen_e_acsl_f3_6); __gmpz_clear(__gen_e_acsl__23); __gmpz_clear(__gen_e_acsl_neg); @@ -80,7 +80,7 @@ int main(void) __gen_e_acsl_gt_3 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_f4_6), (__e_acsl_mpz_struct const *)(__gen_e_acsl__34)); __e_acsl_assert(__gen_e_acsl_gt_3 > 0,(char *)"Assertion",(char *)"main", - (char *)"f4(9) > 0",29); + (char *)"f4(9) > 0",30); __gmpz_clear(__gen_e_acsl_f4_6); __gmpz_clear(__gen_e_acsl__34); } @@ -88,6 +88,138 @@ int main(void) return __retres; } +void __gen_e_acsl_f4_2(__e_acsl_mpz_t *__retres_arg, __e_acsl_mpz_struct * n) +{ + __e_acsl_mpz_t __gen_e_acsl__26; + int __gen_e_acsl_lt_4; + __e_acsl_mpz_t __gen_e_acsl_if_6; + __gmpz_init_set_si(__gen_e_acsl__26,100L); + __gen_e_acsl_lt_4 = __gmpz_cmp((__e_acsl_mpz_struct const *)(n), + (__e_acsl_mpz_struct const *)(__gen_e_acsl__26)); + if (__gen_e_acsl_lt_4 < 0) { + __e_acsl_mpz_t __gen_e_acsl__27; + __e_acsl_mpz_t __gen_e_acsl_add_4; + __e_acsl_mpz_t __gen_e_acsl_f4_4; + __gmpz_init_set_si(__gen_e_acsl__27,1L); + __gmpz_init(__gen_e_acsl_add_4); + __gmpz_add(__gen_e_acsl_add_4,(__e_acsl_mpz_struct const *)(n), + (__e_acsl_mpz_struct const *)(__gen_e_acsl__27)); + /*@ assert + Eva: initialization: + \initialized((__e_acsl_mpz_struct *)__gen_e_acsl_add_4); + */ + __gen_e_acsl_f4_2(& __gen_e_acsl_f4_4, + (__e_acsl_mpz_struct *)__gen_e_acsl_add_4); + __gmpz_init_set(__gen_e_acsl_if_6, + (__e_acsl_mpz_struct const *)(__gen_e_acsl_f4_4)); + __gmpz_clear(__gen_e_acsl__27); + __gmpz_clear(__gen_e_acsl_add_4); + __gmpz_clear(__gen_e_acsl_f4_4); + } + else { + __e_acsl_mpz_t __gen_e_acsl__28; + int __gen_e_acsl_lt_5; + __e_acsl_mpz_t __gen_e_acsl_if_5; + __gmpz_init_set_ui(__gen_e_acsl__28,9223372036854775807UL); + __gen_e_acsl_lt_5 = __gmpz_cmp((__e_acsl_mpz_struct const *)(n), + (__e_acsl_mpz_struct const *)(__gen_e_acsl__28)); + if (__gen_e_acsl_lt_5 < 0) { + __e_acsl_mpz_t __gen_e_acsl__29; + __gmpz_init_set_ui(__gen_e_acsl__29,9223372036854775807UL); + __gmpz_init_set(__gen_e_acsl_if_5, + (__e_acsl_mpz_struct const *)(__gen_e_acsl__29)); + __gmpz_clear(__gen_e_acsl__29); + } + else { + __e_acsl_mpz_t __gen_e_acsl__30; + __gmpz_init_set_si(__gen_e_acsl__30,6L); + __gmpz_init_set(__gen_e_acsl_if_5, + (__e_acsl_mpz_struct const *)(__gen_e_acsl__30)); + __gmpz_clear(__gen_e_acsl__30); + } + __gmpz_init_set(__gen_e_acsl_if_6, + (__e_acsl_mpz_struct const *)(__gen_e_acsl_if_5)); + __gmpz_clear(__gen_e_acsl__28); + __gmpz_clear(__gen_e_acsl_if_5); + } + __gmpz_init_set(*__retres_arg, + (__e_acsl_mpz_struct const *)(__gen_e_acsl_if_6)); + __gmpz_clear(__gen_e_acsl__26); + __gmpz_clear(__gen_e_acsl_if_6); + return; +} + +void __gen_e_acsl_f4(__e_acsl_mpz_t *__retres_arg, int n) +{ + __e_acsl_mpz_t __gen_e_acsl_n_6; + __e_acsl_mpz_t __gen_e_acsl__24; + int __gen_e_acsl_lt_3; + __e_acsl_mpz_t __gen_e_acsl_if_8; + __gmpz_init_set_si(__gen_e_acsl_n_6,(long)n); + __gmpz_init_set_si(__gen_e_acsl__24,100L); + __gen_e_acsl_lt_3 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_n_6), + (__e_acsl_mpz_struct const *)(__gen_e_acsl__24)); + if (__gen_e_acsl_lt_3 < 0) { + __e_acsl_mpz_t __gen_e_acsl_n_7; + __e_acsl_mpz_t __gen_e_acsl__25; + __e_acsl_mpz_t __gen_e_acsl_add_3; + __e_acsl_mpz_t __gen_e_acsl_f4_5; + __gmpz_init_set_si(__gen_e_acsl_n_7,(long)n); + __gmpz_init_set_si(__gen_e_acsl__25,1L); + __gmpz_init(__gen_e_acsl_add_3); + __gmpz_add(__gen_e_acsl_add_3, + (__e_acsl_mpz_struct const *)(__gen_e_acsl_n_7), + (__e_acsl_mpz_struct const *)(__gen_e_acsl__25)); + /*@ assert + Eva: initialization: + \initialized((__e_acsl_mpz_struct *)__gen_e_acsl_add_3); + */ + __gen_e_acsl_f4_2(& __gen_e_acsl_f4_5, + (__e_acsl_mpz_struct *)__gen_e_acsl_add_3); + __gmpz_init_set(__gen_e_acsl_if_8, + (__e_acsl_mpz_struct const *)(__gen_e_acsl_f4_5)); + __gmpz_clear(__gen_e_acsl_n_7); + __gmpz_clear(__gen_e_acsl__25); + __gmpz_clear(__gen_e_acsl_add_3); + __gmpz_clear(__gen_e_acsl_f4_5); + } + else { + __e_acsl_mpz_t __gen_e_acsl_n_8; + __e_acsl_mpz_t __gen_e_acsl__31; + int __gen_e_acsl_lt_6; + __e_acsl_mpz_t __gen_e_acsl_if_7; + __gmpz_init_set_si(__gen_e_acsl_n_8,(long)n); + __gmpz_init_set_ui(__gen_e_acsl__31,9223372036854775807UL); + __gen_e_acsl_lt_6 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_n_8), + (__e_acsl_mpz_struct const *)(__gen_e_acsl__31)); + if (__gen_e_acsl_lt_6 < 0) { + __e_acsl_mpz_t __gen_e_acsl__32; + __gmpz_init_set_ui(__gen_e_acsl__32,9223372036854775807UL); + __gmpz_init_set(__gen_e_acsl_if_7, + (__e_acsl_mpz_struct const *)(__gen_e_acsl__32)); + __gmpz_clear(__gen_e_acsl__32); + } + else { + __e_acsl_mpz_t __gen_e_acsl__33; + __gmpz_init_set_si(__gen_e_acsl__33,6L); + __gmpz_init_set(__gen_e_acsl_if_7, + (__e_acsl_mpz_struct const *)(__gen_e_acsl__33)); + __gmpz_clear(__gen_e_acsl__33); + } + __gmpz_init_set(__gen_e_acsl_if_8, + (__e_acsl_mpz_struct const *)(__gen_e_acsl_if_7)); + __gmpz_clear(__gen_e_acsl_n_8); + __gmpz_clear(__gen_e_acsl__31); + __gmpz_clear(__gen_e_acsl_if_7); + } + __gmpz_init_set(*__retres_arg, + (__e_acsl_mpz_struct const *)(__gen_e_acsl_if_8)); + __gmpz_clear(__gen_e_acsl_n_6); + __gmpz_clear(__gen_e_acsl__24); + __gmpz_clear(__gen_e_acsl_if_8); + return; +} + void __gen_e_acsl_f2_2(__e_acsl_mpz_t *__retres_arg, __e_acsl_mpz_struct * n) { __e_acsl_mpz_t __gen_e_acsl__4; @@ -157,7 +289,7 @@ void __gen_e_acsl_f2_2(__e_acsl_mpz_t *__retres_arg, __e_acsl_mpz_struct * n) __gmpz_init(__gen_e_acsl_div); /*@ assert E_ACSL: f2(n - 3) ≢ 0; */ __e_acsl_assert(! (__gen_e_acsl_div_guard == 0),(char *)"Assertion", - (char *)"f2_2",(char *)"f2(n - 3) == 0",9); + (char *)"f2_2",(char *)"f2(n - 3) == 0",10); __gmpz_tdiv_q(__gen_e_acsl_div, (__e_acsl_mpz_struct const *)(__gen_e_acsl_mul), (__e_acsl_mpz_struct const *)(__gen_e_acsl_f2_8)); @@ -259,7 +391,7 @@ void __gen_e_acsl_f2(__e_acsl_mpz_t *__retres_arg, int n) __gmpz_init(__gen_e_acsl_div_2); /*@ assert E_ACSL: f2(n - 3) ≢ 0; */ __e_acsl_assert(! (__gen_e_acsl_div_guard_2 == 0),(char *)"Assertion", - (char *)"f2",(char *)"f2(n - 3) == 0",9); + (char *)"f2",(char *)"f2(n - 3) == 0",10); __gmpz_tdiv_q(__gen_e_acsl_div_2, (__e_acsl_mpz_struct const *)(__gen_e_acsl_mul_2), (__e_acsl_mpz_struct const *)(__gen_e_acsl_f2_13)); @@ -458,136 +590,4 @@ void __gen_e_acsl_f3(__e_acsl_mpz_t *__retres_arg, int n) return; } -void __gen_e_acsl_f4_2(__e_acsl_mpz_t *__retres_arg, __e_acsl_mpz_struct * n) -{ - __e_acsl_mpz_t __gen_e_acsl__26; - int __gen_e_acsl_lt_4; - __e_acsl_mpz_t __gen_e_acsl_if_6; - __gmpz_init_set_si(__gen_e_acsl__26,100L); - __gen_e_acsl_lt_4 = __gmpz_cmp((__e_acsl_mpz_struct const *)(n), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__26)); - if (__gen_e_acsl_lt_4 < 0) { - __e_acsl_mpz_t __gen_e_acsl__27; - __e_acsl_mpz_t __gen_e_acsl_add_4; - __e_acsl_mpz_t __gen_e_acsl_f4_4; - __gmpz_init_set_si(__gen_e_acsl__27,1L); - __gmpz_init(__gen_e_acsl_add_4); - __gmpz_add(__gen_e_acsl_add_4,(__e_acsl_mpz_struct const *)(n), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__27)); - /*@ assert - Eva: initialization: - \initialized((__e_acsl_mpz_struct *)__gen_e_acsl_add_4); - */ - __gen_e_acsl_f4_2(& __gen_e_acsl_f4_4, - (__e_acsl_mpz_struct *)__gen_e_acsl_add_4); - __gmpz_init_set(__gen_e_acsl_if_6, - (__e_acsl_mpz_struct const *)(__gen_e_acsl_f4_4)); - __gmpz_clear(__gen_e_acsl__27); - __gmpz_clear(__gen_e_acsl_add_4); - __gmpz_clear(__gen_e_acsl_f4_4); - } - else { - __e_acsl_mpz_t __gen_e_acsl__28; - int __gen_e_acsl_lt_5; - __e_acsl_mpz_t __gen_e_acsl_if_5; - __gmpz_init_set_ui(__gen_e_acsl__28,9223372036854775807UL); - __gen_e_acsl_lt_5 = __gmpz_cmp((__e_acsl_mpz_struct const *)(n), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__28)); - if (__gen_e_acsl_lt_5 < 0) { - __e_acsl_mpz_t __gen_e_acsl__29; - __gmpz_init_set_ui(__gen_e_acsl__29,9223372036854775807UL); - __gmpz_init_set(__gen_e_acsl_if_5, - (__e_acsl_mpz_struct const *)(__gen_e_acsl__29)); - __gmpz_clear(__gen_e_acsl__29); - } - else { - __e_acsl_mpz_t __gen_e_acsl__30; - __gmpz_init_set_si(__gen_e_acsl__30,6L); - __gmpz_init_set(__gen_e_acsl_if_5, - (__e_acsl_mpz_struct const *)(__gen_e_acsl__30)); - __gmpz_clear(__gen_e_acsl__30); - } - __gmpz_init_set(__gen_e_acsl_if_6, - (__e_acsl_mpz_struct const *)(__gen_e_acsl_if_5)); - __gmpz_clear(__gen_e_acsl__28); - __gmpz_clear(__gen_e_acsl_if_5); - } - __gmpz_init_set(*__retres_arg, - (__e_acsl_mpz_struct const *)(__gen_e_acsl_if_6)); - __gmpz_clear(__gen_e_acsl__26); - __gmpz_clear(__gen_e_acsl_if_6); - return; -} - -void __gen_e_acsl_f4(__e_acsl_mpz_t *__retres_arg, int n) -{ - __e_acsl_mpz_t __gen_e_acsl_n_6; - __e_acsl_mpz_t __gen_e_acsl__24; - int __gen_e_acsl_lt_3; - __e_acsl_mpz_t __gen_e_acsl_if_8; - __gmpz_init_set_si(__gen_e_acsl_n_6,(long)n); - __gmpz_init_set_si(__gen_e_acsl__24,100L); - __gen_e_acsl_lt_3 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_n_6), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__24)); - if (__gen_e_acsl_lt_3 < 0) { - __e_acsl_mpz_t __gen_e_acsl_n_7; - __e_acsl_mpz_t __gen_e_acsl__25; - __e_acsl_mpz_t __gen_e_acsl_add_3; - __e_acsl_mpz_t __gen_e_acsl_f4_5; - __gmpz_init_set_si(__gen_e_acsl_n_7,(long)n); - __gmpz_init_set_si(__gen_e_acsl__25,1L); - __gmpz_init(__gen_e_acsl_add_3); - __gmpz_add(__gen_e_acsl_add_3, - (__e_acsl_mpz_struct const *)(__gen_e_acsl_n_7), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__25)); - /*@ assert - Eva: initialization: - \initialized((__e_acsl_mpz_struct *)__gen_e_acsl_add_3); - */ - __gen_e_acsl_f4_2(& __gen_e_acsl_f4_5, - (__e_acsl_mpz_struct *)__gen_e_acsl_add_3); - __gmpz_init_set(__gen_e_acsl_if_8, - (__e_acsl_mpz_struct const *)(__gen_e_acsl_f4_5)); - __gmpz_clear(__gen_e_acsl_n_7); - __gmpz_clear(__gen_e_acsl__25); - __gmpz_clear(__gen_e_acsl_add_3); - __gmpz_clear(__gen_e_acsl_f4_5); - } - else { - __e_acsl_mpz_t __gen_e_acsl_n_8; - __e_acsl_mpz_t __gen_e_acsl__31; - int __gen_e_acsl_lt_6; - __e_acsl_mpz_t __gen_e_acsl_if_7; - __gmpz_init_set_si(__gen_e_acsl_n_8,(long)n); - __gmpz_init_set_ui(__gen_e_acsl__31,9223372036854775807UL); - __gen_e_acsl_lt_6 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_n_8), - (__e_acsl_mpz_struct const *)(__gen_e_acsl__31)); - if (__gen_e_acsl_lt_6 < 0) { - __e_acsl_mpz_t __gen_e_acsl__32; - __gmpz_init_set_ui(__gen_e_acsl__32,9223372036854775807UL); - __gmpz_init_set(__gen_e_acsl_if_7, - (__e_acsl_mpz_struct const *)(__gen_e_acsl__32)); - __gmpz_clear(__gen_e_acsl__32); - } - else { - __e_acsl_mpz_t __gen_e_acsl__33; - __gmpz_init_set_si(__gen_e_acsl__33,6L); - __gmpz_init_set(__gen_e_acsl_if_7, - (__e_acsl_mpz_struct const *)(__gen_e_acsl__33)); - __gmpz_clear(__gen_e_acsl__33); - } - __gmpz_init_set(__gen_e_acsl_if_8, - (__e_acsl_mpz_struct const *)(__gen_e_acsl_if_7)); - __gmpz_clear(__gen_e_acsl_n_8); - __gmpz_clear(__gen_e_acsl__31); - __gmpz_clear(__gen_e_acsl_if_7); - } - __gmpz_init_set(*__retres_arg, - (__e_acsl_mpz_struct const *)(__gen_e_acsl_if_8)); - __gmpz_clear(__gen_e_acsl_n_6); - __gmpz_clear(__gen_e_acsl__24); - __gmpz_clear(__gen_e_acsl_if_8); - return; -} -