let direct kf stmt =
try
let nodes = initial_nodes kf stmt in
Security_slicing_parameters.debug
"computing direct component %d" stmt.sid;
let res = related_nodes_of_nodes Direct M.empty nodes in
let mk p =
{ pdg = p; callstack_length = 0;
direct = true; indirect_backward = false; forward = false }
in
let res =
List.fold_left
(fun acc { Todolist.node=n; kf=f; pdg=p } -> M.add (n,f) (mk p) acc)
res
nodes
in
res
with Pdg.Top | Pdg.Bottom ->
Security_slicing_parameters.warning "PDG is not manageable. skipping.";
M.empty