let make_new_ff fi build_actions =
let new_ff fi =
let some_marks, ff = match fi.T.fi_init_marks with
| None -> false, FctMarks.new_empty_slice fi
| Some marks -> true, FctMarks.new_init_slice fi marks
in
let new_filters =
(if build_actions && some_marks then examine_calls ff [] else [])
in
SlicingParameters.debug ~level:1 "[Fct_Slice.make_new_ff] = %s@." (M.ff_name ff);
(ff, new_filters)
in
let fname = M.fi_name fi in
let kf_entry, _ = Globals.entry_point () in
if fname = Kernel_function.get_name kf_entry then
match fi.T.fi_slices with
| [] -> new_ff fi
| ff :: [] -> ff, []
| _ -> M.bug "Entry point shouldn't have several slices"
else
new_ff fi