let iter_on_callers f kf =
let cg = callgraph () in
let module V = Hashtbl.Make(Kernel_function) in
let visited = V.create 17 in
let rec aux kf =
if SGraph.mem_vertex cg kf then
SGraph.iter_succ
(fun caller ->
if not (V.mem visited caller) then begin
f caller;
V.add visited caller ();
aux caller
end)
cg
kf
else
Options.warning ~once:true
"Function %s not registered in semantic callgraph. Skipped."
(Kernel_function.get_name kf)
in
aux kf