let make_new_ff fi build_actions =
  let new_ff fi =
    let some_marks, ff = match  fi.T.fi_init_marks with
      | None -> falseFctMarks.new_empty_slice fi
      | Some marks -> trueFctMarks.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