sig
module Api :
sig
val self : State.t
val set_modes :
?calls:int ->
?callers:bool ->
?sliceUndef:bool -> ?keepAnnotations:bool -> unit -> unit
module Project :
sig
val reset_slicing : unit -> unit
val is_called : Cil_types.kernel_function -> bool
val has_persistent_selection : Cil_types.kernel_function -> bool
val change_slicing_level : Cil_types.kernel_function -> int -> unit
val default_slice_names :
Cil_types.kernel_function -> bool -> int -> string
val extract :
?f_slice_names:(Cil_types.kernel_function ->
bool -> int -> string) ->
string -> Project.t
val is_directly_called_internal : Cil_types.kernel_function -> bool
val print_dot : filename:string -> title:string -> unit
val pretty : Stdlib.Format.formatter -> unit
end
module Mark :
sig
type t
val dyn_t : Slicing.Api.Mark.t Type.t
val make :
data:bool -> addr:bool -> ctrl:bool -> Slicing.Api.Mark.t
val compare : Slicing.Api.Mark.t -> Slicing.Api.Mark.t -> int
val is_bottom : Slicing.Api.Mark.t -> bool
val is_spare : Slicing.Api.Mark.t -> bool
val is_data : Slicing.Api.Mark.t -> bool
val is_ctrl : Slicing.Api.Mark.t -> bool
val is_addr : Slicing.Api.Mark.t -> bool
val get_from_src_func :
Cil_types.kernel_function -> Slicing.Api.Mark.t
val pretty : Stdlib.Format.formatter -> Slicing.Api.Mark.t -> unit
end
module Select :
sig
type t
val dyn_t : Slicing.Api.Select.t Type.t
type set
val dyn_set : Slicing.Api.Select.set Type.t
val empty_selects : Slicing.Api.Select.set
val select_stmt :
Slicing.Api.Select.set ->
spare:bool ->
Cil_types.stmt ->
Cil_types.kernel_function -> Slicing.Api.Select.set
val select_stmt_ctrl :
Slicing.Api.Select.set ->
spare:bool ->
Cil_types.stmt ->
Cil_types.kernel_function -> Slicing.Api.Select.set
val select_stmt_lval_rw :
Slicing.Api.Select.set ->
Slicing.Api.Mark.t ->
rd:Datatype.String.Set.t ->
wr:Datatype.String.Set.t ->
Cil_types.stmt ->
eval:Cil_types.stmt ->
Cil_types.kernel_function -> Slicing.Api.Select.set
val select_stmt_lval :
Slicing.Api.Select.set ->
Slicing.Api.Mark.t ->
Datatype.String.Set.t ->
before:bool ->
Cil_types.stmt ->
eval:Cil_types.stmt ->
Cil_types.kernel_function -> Slicing.Api.Select.set
val select_stmt_annots :
Slicing.Api.Select.set ->
Slicing.Api.Mark.t ->
spare:bool ->
threat:bool ->
user_assert:bool ->
slicing_pragma:bool ->
loop_inv:bool ->
loop_var:bool ->
Cil_types.stmt ->
Cil_types.kernel_function -> Slicing.Api.Select.set
val select_func_lval_rw :
Slicing.Api.Select.set ->
Slicing.Api.Mark.t ->
rd:Datatype.String.Set.t ->
wr:Datatype.String.Set.t ->
eval:Cil_types.stmt ->
Cil_types.kernel_function -> Slicing.Api.Select.set
val select_func_lval :
Slicing.Api.Select.set ->
Slicing.Api.Mark.t ->
Datatype.String.Set.t ->
Cil_types.kernel_function -> Slicing.Api.Select.set
val select_func_return :
Slicing.Api.Select.set ->
spare:bool -> Cil_types.kernel_function -> Slicing.Api.Select.set
val select_func_calls_to :
Slicing.Api.Select.set ->
spare:bool -> Cil_types.kernel_function -> Slicing.Api.Select.set
val select_func_calls_into :
Slicing.Api.Select.set ->
spare:bool -> Cil_types.kernel_function -> Slicing.Api.Select.set
val select_func_annots :
Slicing.Api.Select.set ->
Slicing.Api.Mark.t ->
spare:bool ->
threat:bool ->
user_assert:bool ->
slicing_pragma:bool ->
loop_inv:bool ->
loop_var:bool ->
Cil_types.kernel_function -> Slicing.Api.Select.set
val select_func_zone :
Slicing.Api.Select.set ->
Slicing.Api.Mark.t ->
Locations.Zone.t ->
Cil_types.kernel_function -> Slicing.Api.Select.set
val select_stmt_zone :
Slicing.Api.Select.set ->
Slicing.Api.Mark.t ->
Locations.Zone.t ->
before:bool ->
Cil_types.stmt ->
Cil_types.kernel_function -> Slicing.Api.Select.set
val select_stmt_term :
Slicing.Api.Select.set ->
Slicing.Api.Mark.t ->
Cil_types.term ->
Cil_types.stmt ->
Cil_types.kernel_function -> Slicing.Api.Select.set
val select_stmt_pred :
Slicing.Api.Select.set ->
Slicing.Api.Mark.t ->
Cil_types.predicate ->
Cil_types.stmt ->
Cil_types.kernel_function -> Slicing.Api.Select.set
val select_stmt_annot :
Slicing.Api.Select.set ->
Slicing.Api.Mark.t ->
spare:bool ->
Cil_types.code_annotation ->
Cil_types.stmt ->
Cil_types.kernel_function -> Slicing.Api.Select.set
val select_pdg_nodes :
Slicing.Api.Select.set ->
Slicing.Api.Mark.t ->
PdgTypes.Node.t list ->
Cil_types.kernel_function -> Slicing.Api.Select.set
val get_function :
Slicing.Api.Select.t -> Cil_types.kernel_function
val merge_internal :
Slicing.Api.Select.t ->
Slicing.Api.Select.t -> Slicing.Api.Select.t
val add_to_selects_internal :
Slicing.Api.Select.t ->
Slicing.Api.Select.set -> Slicing.Api.Select.set
val iter_selects_internal :
(Slicing.Api.Select.t -> unit) -> Slicing.Api.Select.set -> unit
val fold_selects_internal :
('a -> Slicing.Api.Select.t -> 'a) ->
'a -> Slicing.Api.Select.set -> 'a
val select_stmt_internal :
Cil_types.kernel_function ->
?select:Slicing.Api.Select.t ->
Cil_types.stmt -> Slicing.Api.Mark.t -> Slicing.Api.Select.t
val select_label_internal :
Cil_types.kernel_function ->
?select:Slicing.Api.Select.t ->
Cil_datatype.Logic_label.t ->
Slicing.Api.Mark.t -> Slicing.Api.Select.t
val select_min_call_internal :
Cil_types.kernel_function ->
?select:Slicing.Api.Select.t ->
Cil_types.stmt -> Slicing.Api.Mark.t -> Slicing.Api.Select.t
val select_stmt_zone_internal :
Cil_types.kernel_function ->
?select:Slicing.Api.Select.t ->
Cil_types.stmt ->
before:bool ->
Locations.Zone.t -> Slicing.Api.Mark.t -> Slicing.Api.Select.t
val select_zone_at_entry_point_internal :
Cil_types.kernel_function ->
?select:Slicing.Api.Select.t ->
Locations.Zone.t -> Slicing.Api.Mark.t -> Slicing.Api.Select.t
val select_zone_at_end_internal :
Cil_types.kernel_function ->
?select:Slicing.Api.Select.t ->
Locations.Zone.t -> Slicing.Api.Mark.t -> Slicing.Api.Select.t
val select_modified_output_zone_internal :
Cil_types.kernel_function ->
?select:Slicing.Api.Select.t ->
Locations.Zone.t -> Slicing.Api.Mark.t -> Slicing.Api.Select.t
val select_stmt_ctrl_internal :
Cil_types.kernel_function ->
?select:Slicing.Api.Select.t ->
Cil_types.stmt -> Slicing.Api.Select.t
val select_entry_point_internal :
Cil_types.kernel_function ->
?select:Slicing.Api.Select.t ->
Slicing.Api.Mark.t -> Slicing.Api.Select.t
val select_return_internal :
Cil_types.kernel_function ->
?select:Slicing.Api.Select.t ->
Slicing.Api.Mark.t -> Slicing.Api.Select.t
val select_decl_var_internal :
Cil_types.kernel_function ->
?select:Slicing.Api.Select.t ->
Cil_types.varinfo -> Slicing.Api.Mark.t -> Slicing.Api.Select.t
val select_pdg_nodes_internal :
Cil_types.kernel_function ->
?select:Slicing.Api.Select.t ->
PdgTypes.Node.t list ->
Slicing.Api.Mark.t -> Slicing.Api.Select.t
val pretty :
Stdlib.Format.formatter -> Slicing.Api.Select.t -> unit
end
module Slice :
sig
type t
val dyn_t : Slicing.Api.Slice.t Type.t
val create : Cil_types.kernel_function -> Slicing.Api.Slice.t
val remove : Slicing.Api.Slice.t -> unit
val remove_uncalled : unit -> unit
val get_all : Cil_types.kernel_function -> Slicing.Api.Slice.t list
val get_function : Slicing.Api.Slice.t -> Cil_types.kernel_function
val get_callers : Slicing.Api.Slice.t -> Slicing.Api.Slice.t list
val get_called_slice :
Slicing.Api.Slice.t ->
Cil_types.stmt -> Slicing.Api.Slice.t option
val get_called_funcs :
Slicing.Api.Slice.t ->
Cil_types.stmt -> Cil_types.kernel_function list
val get_mark_from_stmt :
Slicing.Api.Slice.t -> Cil_types.stmt -> Slicing.Api.Mark.t
val get_mark_from_label :
Slicing.Api.Slice.t ->
Cil_types.stmt -> Cil_types.label -> Slicing.Api.Mark.t
val get_mark_from_local_var :
Slicing.Api.Slice.t -> Cil_types.varinfo -> Slicing.Api.Mark.t
val get_mark_from_formal :
Slicing.Api.Slice.t -> Cil_types.varinfo -> Slicing.Api.Mark.t
val get_user_mark_from_inputs :
Slicing.Api.Slice.t -> Slicing.Api.Mark.t
val get_num_id : Slicing.Api.Slice.t -> int
val from_num_id :
Cil_types.kernel_function -> int -> Slicing.Api.Slice.t
val pretty : Stdlib.Format.formatter -> Slicing.Api.Slice.t -> unit
end
module Request :
sig
val apply_all : propagate_to_callers:bool -> unit
val add_selection : Slicing.Api.Select.set -> unit
val add_persistent_selection : Slicing.Api.Select.set -> unit
val add_persistent_cmdline : unit -> unit
val add_slice_selection_internal :
Slicing.Api.Slice.t -> Slicing.Api.Select.t -> unit
val add_selection_internal : Slicing.Api.Select.t -> unit
val add_call_slice :
caller:Slicing.Api.Slice.t -> to_call:Slicing.Api.Slice.t -> unit
val add_call_fun :
caller:Slicing.Api.Slice.t ->
to_call:Cil_types.kernel_function -> unit
val add_call_min_fun :
caller:Slicing.Api.Slice.t ->
to_call:Cil_types.kernel_function -> unit
val is_request_empty_internal : unit -> bool
val apply_all_internal : unit -> unit
val apply_next_internal : unit -> unit
val merge_slices :
Slicing.Api.Slice.t ->
Slicing.Api.Slice.t -> replace:bool -> Slicing.Api.Slice.t
val copy_slice : Slicing.Api.Slice.t -> Slicing.Api.Slice.t
val split_slice : Slicing.Api.Slice.t -> Slicing.Api.Slice.t list
val propagate_user_marks : unit -> unit
val pretty : Stdlib.Format.formatter -> unit
end
end
module PrintSlice :
sig
val print_fct_stmts :
Stdlib.Format.formatter -> Cil_types.kernel_function -> unit
end
end