let mark_visible_output ff_marks =
let pdg, _ = ff_marks in
try
let out_node = !Db.Pdg.find_ret_output_node pdg in
let dpds = !Db.Pdg.direct_dpds pdg out_node in
let get_n_mark n = get_mark ff_marks (PdgTypes.Node.elem_key n) in
let dpds_marks = List.map get_n_mark dpds in
let m = Marks.inter_marks dpds_marks in
if not (Marks.is_bottom_mark m) then begin
SlicingParameters.debug ~level:2
"[Fct_Slice.FctMarks.mark_visible_outputs] %a -> %a"
(!Db.Pdg.pretty_node true) out_node Marks.pretty_mark m;
let select = PdgMarks.add_node_to_select [] (out_node, None) m in
let to_prop = mark_and_propagate ff_marks select in
assert (to_prop = PropMark.empty_to_prop); ()
end
with Not_found -> ()