let topologically_iter_on_functions =
  let module T = Graph.Topological.Make(SGraphin
  fun f ->
    (* compute on need *)
    if SCQueue.is_empty () then T.iter SCQueue.add (callgraph ());
    SCQueue.iter f