let main () =
if Inout_parameters.ForceAccessPath.get () then
!Db.Semantic_Callgraph.topologically_iter_on_functions
(fun kf ->
if Kernel_function.is_definition kf && !Db.Value.is_called kf then
let state =
Db.Value.get_state
(Cil_types.Kstmt (Kernel_function.find_first_stmt kf))
in
let inputs = !Db.Operational_inputs.get_internal kf in
let s = !Db.Access_path.compute state
(Cvalue.Model.fold_base
(fun base acc -> Base.Set.add base acc)
state
Base.Set.empty)
in
Inout_parameters.result
"Filtered access_path for %a :@ %a@."
Kernel_function.pretty kf
!Db.Access_path.pretty
(!Db.Access_path.filter s
(Locations.Zone.filter_base
(fun b ->
not (Base.is_local b (Kernel_function.get_definition kf)))
inputs.Inout_type.over_inputs)))