let compute () =
  feedback "beginning analysis";
  let p = Ast.get () in
  let cg = computeGraph p in
  let main = Kernel.MainFunction.get () in
  let main_name =
    try
      entry_point_ref := Some (Hashtbl.find cg main);
      Some main
    with Not_found ->
      warning "no entry point available: services could be less precise. Use option `-main' to improve them.";
      entry_point_ref := None;
      None
  in
  let init_funcs = get_init_funcs main_name cg in
  let cg = Service.compute cg init_funcs in
  CG.mark_as_computed ();
  feedback "analysis done";
  cg