let called_info (project, ff) call_stmt =
let info = match ff with
| Isrc | Iproto -> None
| Iff (slice, _) ->
try
let _, ff_marks = slice.T.ff_marks in
let called, _ =
PdgIndex.FctIndex.find_call ff_marks call_stmt in
match called with
| None | Some (None) ->
SlicingParameters.error "Undefined called function call-%d\n"
call_stmt.sid;
M.bug "unknown call"
| Some (Some (T.CallSrc _)) -> None
| Some (Some (T.CallSlice ff)) ->
let kf_ff = M.get_ff_kf ff in
let src_visible = is_src_fun_visible project kf_ff in
(Some (kf_ff, Iff (ff, src_visible)))
with PdgIndex.NotFound ->
assert false
in
SlicingParameters.debug ~level:2 "[SlicingTransform.Visibility.called_info] called_info stmt %d -> %s@."
call_stmt.sid (if info = None then "src" else "some slice");
info