let merge_slices ff1 ff2 =
  let fi = M.ff_fi ff1 in
    assert (M.equal_fi fi (M.ff_fi ff2)); (* TODO : raise exception *)
  let ff, _ =
    try make_new_ff fi false
        (* [ff] can already have some persistent selection,
        * but we can safely forget then because they then have to also be in
        * [ff1] and [ff2]. *)

    with SlicingTypes.NoPdg -> assert false
  in
  ff.T.ff_marks <- FctMarks.merge ff1 ff2;
  let to_prop = FctMarks.empty_to_prop (* ff is new, so it isn't called,
                      and all its calls are reset to None... *)
 in
  let new_filters = after_marks_modifications ff to_prop in
  ff, new_filters