module Scope: sig
.. end
Interface for the Scope plugin.
See also internal documentation.
val get_data_scope_at_stmt : (Db_types.kernel_function ->
Cil_types.stmt ->
Cil_types.lval ->
Cilutil.StmtSet.t * (Cilutil.StmtSet.t * Cilutil.StmtSet.t))
Pervasives.ref
Raises Kernel_function.No_Definition
if
kf
has no definition.
Returns 3 statement sets related to the value of
lval
before
stmt
:
- the forward selection,
- the both way selection,
- the backward selection.
val get_prop_scope_at_stmt : (Db_types.kernel_function ->
Cil_types.stmt ->
Cil_types.code_annotation ->
Cilutil.StmtSet.t * Cil_types.code_annotation list)
Pervasives.ref
compute the set of statements where the given annotation has the same
value than it has before the given stmt.
Also return the
val check_asserts : (unit -> Cil_types.code_annotation list) Pervasives.ref
Print how many assertions could be removed based on the previous
analysis (get_prop_scope_at_stmt
) and return the annotations
that can be removed.
val rm_asserts : (unit -> unit) Pervasives.ref
Same analysis than check_asserts
but change assert to remove by true
val get_defs : (Db_types.kernel_function ->
Cil_types.stmt ->
Cil_types.lval -> (Cilutil.StmtSet.t * Locations.Zone.t option) option)
Pervasives.ref
Returns the set of statements that define lval
before stmt
in kf
.
Also returns the zone that is possibly not defined.
Can return None
when the information is not available (Pdg missing).
Zones
type
t_zones = Locations.Zone.t Inthash.t
val build_zones : (Db_types.kernel_function ->
Cil_types.stmt -> Cil_types.lval -> Cilutil.StmtSet.t * t_zones)
Pervasives.ref
val pretty_zones : (Format.formatter -> t_zones -> unit) Pervasives.ref
val get_zones : (t_zones -> Cil_types.stmt -> Locations.Zone.t) Pervasives.ref