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