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