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 PdgIndex.NotFound -> ()