let apply_choose_call proj ff call =
SlicingParameters.debug ~level:2 "[Fct_Slice.apply_choose_call] for call-%d" call.sid;
let call_id = ff, call in
let call_info = CallInfo.get_info_call (ff, call) in
if ((CallInfo.get_f_called call_info) = None) then
begin
if CallInfo.something_visible call_info then
let fbase_to_call = M.get_fi_call proj call in
let f_to_call, actions =
choose_f_to_call fbase_to_call call_info in
let actions =
add_change_call_action ff call call_info f_to_call actions in
let actions = match f_to_call with
| T.CallSrc _ -> actions
| T.CallSlice ff ->
check_called_outputs call_id ff actions
in actions
else
begin
SlicingParameters.debug ~level:2 " -> invisible call : nothing to do";
[]
end
end
else
begin
SlicingParameters.debug ~level:2 " -> already call something : nothing to do";
[]
end