let compute_and_return kf =
let call_site_loc = CurrentLoc.get () in
From_parameters.feedback
"Computing for function %a%s"
Kernel_function.pretty kf
(let s = ref "" in
Stack.iter
(fun kf ->
s := !s^" <-"^(Pretty_utils.sfprintf "%a" Kernel_function.pretty kf))
call_stack;
!s);
!Db.progress ();
let result =
if !Db.Value.use_spec_instead_of_definition kf
then compute_using_prototype kf
else compute_using_cfg kf
in
let result = Recording_To_Do.final_cleanup kf result in
Recording_To_Do.record_kf kf result;
From_parameters.feedback
"Done for function %a" Kernel_function.pretty kf;
!Db.progress ();
CurrentLoc.set call_site_loc;
result