let get_init_funcs () =
  let init_funcs = InitFunc.get () in
  try
    let callees =
      let kf, _ = Globals.entry_point () in
      !Db.Users.get kf
    in
    
    (** add the entry point as root *)

    let init_funcs =
      Datatype.String.Set.add (Kernel.MainFunction.get ()) init_funcs
    in
    (* add the callees of entry point as roots *)
    Kernel_function.Hptset.fold
      (fun kf acc -> Datatype.String.Set.add (Kernel_function.get_name kf) acc)
      callees
      init_funcs
  with Globals.No_such_entry_point _ ->
    (* always an entry point for the semantic callgraph since value analysis has
       been computed. *)

    assert false