let get_mark_from_src_fun proj kf =
  let kf_entry, _library = Globals.entry_point () in
    if !Db.Slicing.Project.is_called proj kf_entry then
      Marks.mk_user_mark ~data:true ~addr:true ~ctrl:true
    else
      let directly_called proj kf = (M.get_kf_fi proj kf).T.f_called_by in
      let get_call_mark (ff,stmt) = get_stmt_mark ff stmt in
      let merge m1 m2 = Marks.merge_marks [m1 ; m2] in
      let is_top = Marks.is_top_mark in
      let bottom = Marks.bottom_mark in
        merge_fun_callers directly_called get_call_mark merge is_top bottom proj kf