let rec remove_uncalled_slices proj =
let kf_entry, _ = Globals.entry_point () in
let entry_name = Kernel_function.get_name kf_entry in
let check_ff changes ff =
match ff.T.ff_called_by with [] -> remove_ff proj ff; true | _ -> changes
in let check_fi changes fi =
if (M.fi_name fi) <> entry_name then
List.fold_left check_ff changes (M.fi_slices fi)
else changes
in let changes = M.fold_fi check_fi false proj in
if changes then remove_uncalled_slices proj else ()