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 -> ()