let iter_edges_slices f proj =
    let do_edge dest (ff_caller, call) =
      f ((Slice ff_caller, dest), Some call) in
    let do_f _f_var fi =
      List.iter (do_edge (Src fi)) fi.T.f_called_by;
      let do_ff ff = List.iter (do_edge (Slice ff)) ff.T.ff_called_by in
      List.iter do_ff (M.fi_slices fi)
    in
    Cil_datatype.Varinfo.Hashtbl.iter do_f proj.T.functions