let compute_pdg kf =
if not (Db.Value.is_computed ()) then !Db.Value.compute ();
Pdg_parameters.feedback "computing for function %a" Kernel_function.pretty kf;
try
if is_variadic kf then
Extlib.not_yet_implemented "variadic function";
let pdg = compute_pdg_for_f kf in
Pdg_parameters.feedback "done for function %a" Kernel_function.pretty kf;
pdg
with
| Err_Bot what ->
Pdg_parameters.warning "%s" what ;
degenerated false kf
| Log.AbortFatal what ->
Pdg_parameters.warning "internal error: %s" what ;
degenerated true kf
| Log.AbortError what ->
Pdg_parameters.warning "user error: %s" what ;
degenerated true kf
| Pdg_state.Cannot_fold ->
Pdg_parameters.warning "too imprecise value analysis : abort" ;
degenerated true kf
| Extlib.NotYetImplemented what ->
Pdg_parameters.warning "not implemented by PDG yet: %s" what ;
degenerated true kf
| Log.FeatureRequest (who, what) ->
Pdg_parameters.warning "not implemented by [%s] yet: %s" who what ;
degenerated true kf