module Register:sig
..end
module Occurrence_datatype:Datatype.Triple
(
Datatype.Option
(
Kernel_function
)
)
(
Cil_datatype.Kinstr
)
(
Cil_datatype.Lval
)
module Occurrences:sig
..end
class occurrence :object
..end
type
access_type =
| |
Read |
| |
Write |
| |
Both |
class is_sub_lval :Cil_datatype.Lval.t ->
object
..end
Try to find lv
somewhere within a Cil value
val classify_accesses : 'a * Cil_types.kinstr * Cil_datatype.Lval.t -> access_type
Occurrence has found the given lv
somewhere inside ki
. We try to find
whether this was inside a read or a write operation. This is difficult to
do directly inside the Register.occurrence
class, as the vlval
method
has no information about the origin of the lval it was called on
val get : Cil_datatype.Varinfo.t -> Occurrence_datatype.t list
val d_ki : Format.formatter -> Kernel_function.t option * Cil_types.kinstr -> unit
val print_one : Format.formatter ->
Cil_types.varinfo ->
(Kernel_function.t option * Cil_types.kinstr * Cil_types.lval) list -> unit
val print_all : unit -> unit
val self : State.t
val get_last_result : unit ->
((Kernel_function.t option * Cil_types.kinstr *
(Cil_types.lhost * Cil_types.offset))
list * Cil_types.varinfo)
option
val get : Cil_datatype.Varinfo.t -> Occurrence_datatype.t list
val print_all : unit -> unit
val main : 'a -> unit