module F_SigMarks:
SigMarks
works on the marks in function signatures.
type
tm = M.t
type
t = tm PdgIndex.Signature.t
val empty : 'a PdgIndex.Signature.t
val pretty : Format.formatter -> M.t PdgIndex.Signature.t -> unit
val get_input_mark : t -> int -> tm
val get_in_ctrl_mark : t -> tm
val get_in_top_mark : t -> tm
val get_all_input_marks : t ->
(PdgIndex.Signature.t_in_key * tm) list
exception Visible
val raise_if_visible : unit -> 'a * M.t -> unit
val some_visible_out : M.t PdgIndex.Signature.t -> bool
val is_topin_visible : t -> bool
val ctrl_visible : t -> bool
val some_visible_in : t -> bool
val merge_inputs_m1_mark : M.t PdgIndex.Signature.t -> M.t
val get_input_loc_under_mark : M.t PdgIndex.Signature.t -> Locations.Zone.t -> M.t
Returns an under-approxamation of the mark for the given location.
If the location is not included in the union of the implicit inputs,
it returns bottom.
Else, it returns the intersection of the inputs that intersect the location.
val something_visible : t -> bool
val combined_marks : M.t PdgIndex.Signature.t -> M.t
Returns the mark that has to be associated to the call statement.
It summarize the marks of all nodes.
val add_spare : (int * M.t) list -> int -> (int * M.t) list
check if the output marks in called_marks
are enough for the
call_marks
.
val get_called_marks : M.t PdgIndex.Signature.t option -> M.t PdgIndex.Signature.t
val check_input : M.t PdgIndex.Signature.t ->
(PdgIndex.Signature.t_in_key * M.t) list * bool ->
PdgIndex.Signature.t_in_key * M.t ->
(PdgIndex.Signature.t_in_key * M.t) list * bool
val check_input_marks : M.t PdgIndex.Signature.t ->
(PdgIndex.Signature.t_in_key * M.t) list ->
(PdgIndex.Signature.t_in_key * M.t) list * bool
val check_called_input_marks : M.t PdgIndex.Signature.t ->
M.t PdgIndex.Signature.t option ->
(PdgIndex.Signature.t_in_key * M.t) list * bool
check if the input marks in call_marks
are enough to call a slice with
called_marks
.
Returns a list of (input number, mark) that are missing,
and a boolean that says if the propagation in the call
would make more visible inputs in the call signature.
val get_marked_out_zone : SlicingMarks.T.t_pdg_mark PdgIndex.Signature.t -> bool * Locations.Zone.t