From 1374b94f71db4cbfe1c55c649682cb1dab29fd37 Mon Sep 17 00:00:00 2001 From: Julien Signoles <julien.signoles@cea.fr> Date: Fri, 21 Jun 2013 13:20:45 +0000 Subject: [PATCH] [E-ACSL] still fewer unknown locations --- src/plugins/e-acsl/mpz.ml | 3 +-- .../tests/e-acsl-runtime/oracle/bts1324.1.res.oracle | 2 +- .../tests/e-acsl-runtime/oracle/bts1324.res.oracle | 2 +- .../tests/e-acsl-runtime/oracle/bts1390.1.res.oracle | 3 ++- .../tests/e-acsl-runtime/oracle/bts1390.res.oracle | 3 ++- .../e-acsl-runtime/oracle/linear_search.1.res.oracle | 3 ++- .../tests/e-acsl-runtime/oracle/linear_search.res.oracle | 3 ++- src/plugins/e-acsl/translate.ml | 9 ++++++--- 8 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/plugins/e-acsl/mpz.ml b/src/plugins/e-acsl/mpz.ml index c55a6d9d97e..a9c5a530c7e 100644 --- a/src/plugins/e-acsl/mpz.ml +++ b/src/plugins/e-acsl/mpz.ml @@ -21,7 +21,6 @@ (**************************************************************************) open Cil_types -open Cil_datatype let t_torig_ref = ref @@ -59,7 +58,7 @@ let get_set_suffix_and_arg e = | TPtr(TInt(IChar, _), _) -> "_str", (* decimal base for the number given as string *) - [ e; Cil.integer ~loc:Location.unknown 10 ] + [ e; Cil.integer ~loc:e.eloc 10 ] | _ -> assert false let generic_affect ~loc fname lv ev e = diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/bts1324.1.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/bts1324.1.res.oracle index 31bf99c6e3c..dd3522b0651 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/bts1324.1.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/bts1324.1.res.oracle @@ -34,7 +34,7 @@ share/e-acsl/e_acsl_gmp.h:91:[value] Function __gmpz_set: precondition got statu share/e-acsl/e_acsl_gmp.h:92:[value] Function __gmpz_set: precondition got status valid. [value] using specification for function __gmpz_clear share/e-acsl/e_acsl_gmp.h:114:[value] Function __gmpz_clear: precondition got status valid. -:0:[value] entering loop for the first time +tests/e-acsl-runtime/bts1324.i:8:[value] entering loop for the first time [value] using specification for function __gmpz_cmp share/e-acsl/e_acsl_gmp.h:124:[value] Function __gmpz_cmp: precondition got status valid. share/e-acsl/e_acsl_gmp.h:125:[value] Function __gmpz_cmp: precondition got status valid. diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/bts1324.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/bts1324.res.oracle index 7315d054464..243cae07889 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/bts1324.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/bts1324.res.oracle @@ -16,7 +16,7 @@ __memory_size ∈ [--..--] [value] using specification for function __store_block [value] using specification for function __initialize -:0:[value] entering loop for the first time +tests/e-acsl-runtime/bts1324.i:8:[value] entering loop for the first time [value] using specification for function __valid_read [value] using specification for function e_acsl_assert share/e-acsl/e_acsl.h:34:[value] Function e_acsl_assert: precondition got status unknown. diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/bts1390.1.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/bts1390.1.res.oracle index 95b2d0a49d8..633eebb1b80 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/bts1390.1.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/bts1390.1.res.oracle @@ -18,10 +18,11 @@ [value] using specification for function __store_block [value] using specification for function __full_init [value] using specification for function __literal_string -:0:[value] entering loop for the first time +tests/e-acsl-runtime/bts1390.c:15:[value] entering loop for the first time [value] using specification for function __valid_read [value] using specification for function e_acsl_assert share/e-acsl/e_acsl.h:34:[value] Function e_acsl_assert: precondition got status unknown. +tests/e-acsl-runtime/bts1390.c:11:[value] entering loop for the first time tests/e-acsl-runtime/bts1390.c:20:[value] entering loop for the first time [value] using specification for function __delete_block tests/e-acsl-runtime/bts1390.c:13:[value] Function memchr, behavior exists: postcondition got status valid. (Behavior may be inactive, no reduction performed.) diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/bts1390.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/bts1390.res.oracle index 7fbf952e57a..121482b5954 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/bts1390.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/bts1390.res.oracle @@ -33,7 +33,7 @@ share/e-acsl/e_acsl_gmp.h:91:[value] Function __gmpz_set: precondition got statu share/e-acsl/e_acsl_gmp.h:92:[value] Function __gmpz_set: precondition got status valid. [value] using specification for function __gmpz_clear share/e-acsl/e_acsl_gmp.h:114:[value] Function __gmpz_clear: precondition got status valid. -:0:[value] entering loop for the first time +tests/e-acsl-runtime/bts1390.c:15:[value] entering loop for the first time [value] using specification for function __gmpz_init_set_ui share/e-acsl/e_acsl_gmp.h:53:[value] Function __gmpz_init_set_ui: precondition got status valid. share/e-acsl/e_acsl_gmp.h:55:[value] Function __gmpz_init_set_ui: postcondition got status valid. @@ -48,6 +48,7 @@ tests/e-acsl-runtime/bts1390.c:15:[kernel] warning: out of bounds read. assert \ share/e-acsl/e_acsl_gmp.h:140:[value] Function __gmpz_add: precondition got status valid. share/e-acsl/e_acsl_gmp.h:141:[value] Function __gmpz_add: precondition got status valid. share/e-acsl/e_acsl_gmp.h:142:[value] Function __gmpz_add: precondition got status valid. +tests/e-acsl-runtime/bts1390.c:11:[value] entering loop for the first time tests/e-acsl-runtime/bts1390.c:11:[kernel] warning: out of bounds read. assert \valid_read((char *)buf+__e_acsl_i_2); tests/e-acsl-runtime/bts1390.c:20:[value] entering loop for the first time [value] using specification for function __delete_block diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/linear_search.1.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/linear_search.1.res.oracle index 8a4630fea36..28ec7679cbd 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/linear_search.1.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/linear_search.1.res.oracle @@ -48,8 +48,9 @@ share/e-acsl/e_acsl_gmp.h:142:[value] Function __gmpz_add: precondition got stat tests/e-acsl-runtime/linear_search.i:9:[kernel] warning: accessing out of bounds index [0..4294967295]. assert __e_acsl_3 < 10; [value] using specification for function e_acsl_assert share/e-acsl/e_acsl.h:34:[value] Function e_acsl_assert: precondition got status unknown. -:0:[value] entering loop for the first time +tests/e-acsl-runtime/linear_search.i:14:[value] entering loop for the first time tests/e-acsl-runtime/linear_search.i:14:[kernel] warning: accessing out of bounds index [0..4294967295]. assert __e_acsl_j_4 < 10; +tests/e-acsl-runtime/linear_search.i:11:[value] entering loop for the first time tests/e-acsl-runtime/linear_search.i:11:[kernel] warning: accessing out of bounds index [0..4294967295]. assert __e_acsl_j_2 < 10; tests/e-acsl-runtime/linear_search.i:9:[value] Function search: precondition got status unknown. tests/e-acsl-runtime/linear_search.i:19:[value] Loop invariant got status valid. diff --git a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/linear_search.res.oracle b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/linear_search.res.oracle index a3216aea63e..94d7fda7d4d 100644 --- a/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/linear_search.res.oracle +++ b/src/plugins/e-acsl/tests/e-acsl-runtime/oracle/linear_search.res.oracle @@ -22,7 +22,8 @@ tests/e-acsl-runtime/linear_search.i:9:[value] entering loop for the first time [value] using specification for function e_acsl_assert share/e-acsl/e_acsl.h:34:[value] Function e_acsl_assert: precondition got status valid. share/e-acsl/e_acsl.h:34:[value] Function e_acsl_assert: precondition got status unknown. -:0:[value] entering loop for the first time +tests/e-acsl-runtime/linear_search.i:14:[value] entering loop for the first time +tests/e-acsl-runtime/linear_search.i:11:[value] entering loop for the first time tests/e-acsl-runtime/linear_search.i:9:[value] Function search: precondition got status unknown. tests/e-acsl-runtime/linear_search.i:19:[value] Loop invariant got status valid. tests/e-acsl-runtime/linear_search.i:20:[value] Loop invariant got status unknown. diff --git a/src/plugins/e-acsl/translate.ml b/src/plugins/e-acsl/translate.ml index c7f6447d64a..78d76d732ac 100644 --- a/src/plugins/e-acsl/translate.ml +++ b/src/plugins/e-acsl/translate.ml @@ -581,9 +581,9 @@ and named_predicate_content_to_exp ?name kf env p = | Pforall _ | Pexists _ -> Quantif.quantif_to_exp kf env p | Pat(p, LogicLabel(_, label)) when label = "Here" -> named_predicate_to_exp kf env p - | Pat(p, label) -> + | Pat(p', label) -> (* convert [t'] to [e] in a separated local env *) - let e, env = named_predicate_to_exp kf (Env.push env) p in + let e, env = named_predicate_to_exp kf (Env.push env) p' in let e, env, is_string = at_to_exp env None label e in assert (not is_string); e, env @@ -693,7 +693,10 @@ let predicate_to_exp kf p = let assumes_predicate bhv = List.fold_left - (fun acc p -> Logic_const.pand (acc, Logic_const.unamed p.ip_content)) + (fun acc p -> + Logic_const.pand + ~loc:p.ip_loc + (acc, Logic_const.unamed ~loc:p.ip_loc p.ip_content)) Logic_const.ptrue bhv.b_assumes -- GitLab