Skip to content
Snippets Groups Projects
Commit f9a139c8 authored by Valentin Perrelle's avatar Valentin Perrelle Committed by David Bühler
Browse files

[Eva] api: separate lval_deps and address_deps

parent 0a41f035
No related branches found
No related tags found
No related merge requests found
...@@ -70,8 +70,9 @@ module Results: sig ...@@ -70,8 +70,9 @@ module Results: sig
val as_cvalue_model : request -> Cvalue.Model.t result val as_cvalue_model : request -> Cvalue.Model.t result
(* Dependencies *) (* Dependencies *)
val expr_deps : Cil_types.exp -> request -> Locations.Zone.t val expr_deps : Cil_types.exp -> request -> Locations.Zone.t (* The zone of bits read to evaluate the expression, including adresses computation *)
val lval_deps : Cil_types.lval -> request -> Locations.Zone.t val lval_deps : Cil_types.lval -> request -> Locations.Zone.t (* The zone of bits read to evaluate the lvalue, including lvalue zone itself *)
val address_deps : Cil_types.lval -> request -> Locations.Zone.t (* The zone of bits read to evaluate the lvalue, excluding the lvalue zone itself *)
(* Evaluation *) (* Evaluation *)
val eval_var : Cil_types.varinfo -> request -> value evaluation val eval_var : Cil_types.varinfo -> request -> value evaluation
......
...@@ -23,7 +23,6 @@ ...@@ -23,7 +23,6 @@
(** Functions of the Value plugin registered in {!Db}. Only two functions (** Functions of the Value plugin registered in {!Db}. Only two functions
are exported. *) are exported. *)
val eval_deps : Cvalue.Model.t * Locals_scoping.clobbered_set -> val eval_deps : Cvalue_domain.State.t -> Cil_types.exp -> Locations.Zone.t
Cil_types.exp -> Locations.Zone.t val eval_deps_lval : Cvalue_domain.State.t -> Cil_types.lval -> Locations.Zone.t
val eval_deps_lval : Cvalue.Model.t * Locals_scoping.clobbered_set -> val eval_deps_addr : Cvalue_domain.State.t -> Cil_types.lval -> Locations.Zone.t
Cil_types.lval -> Locations.Zone.t
...@@ -511,6 +511,14 @@ struct ...@@ -511,6 +511,14 @@ struct
in in
req |> as_cvalue_model |> req |> as_cvalue_model |>
Result.fold ~error:(fun _ -> Locations.Zone.bottom) ~ok:compute_deps Result.fold ~error:(fun _ -> Locations.Zone.bottom) ~ok:compute_deps
let address_deps lval req =
let compute_deps cvalue =
Register.eval_deps_addr (cvalue, Locals_scoping.bottom ()) lval
in
req |> as_cvalue_model |>
Result.fold ~error:(fun _ -> Locations.Zone.bottom) ~ok:compute_deps
end end
...@@ -554,6 +562,10 @@ let lval_deps lval req = ...@@ -554,6 +562,10 @@ let lval_deps lval req =
let module E = Make () in let module E = Make () in
E.lval_deps lval req E.lval_deps lval req
let address_deps lval req =
let module E = Make () in
E.address_deps lval req
(* Evaluation *) (* Evaluation *)
......
...@@ -72,8 +72,9 @@ val equality_class : Cil_types.exp -> request -> Cil_types.exp list result ...@@ -72,8 +72,9 @@ val equality_class : Cil_types.exp -> request -> Cil_types.exp list result
val as_cvalue_model : request -> Cvalue.Model.t result val as_cvalue_model : request -> Cvalue.Model.t result
(* Dependencies *) (* Dependencies *)
val expr_deps : Cil_types.exp -> request -> Locations.Zone.t val expr_deps : Cil_types.exp -> request -> Locations.Zone.t (* The zone of bits read to evaluate the expression, including adresses computation *)
val lval_deps : Cil_types.lval -> request -> Locations.Zone.t val lval_deps : Cil_types.lval -> request -> Locations.Zone.t (* The zone of bits read to evaluate the lvalue, including lvalue zone itself *)
val address_deps : Cil_types.lval -> request -> Locations.Zone.t (* The zone of bits read to evaluate the lvalue, excluding the lvalue zone itself *)
(* Evaluation *) (* Evaluation *)
val eval_var : Cil_types.varinfo -> request -> value evaluation val eval_var : Cil_types.varinfo -> request -> value evaluation
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment