let select_entry_point_and_some_inputs_outputs set ~mark kf ~return ~outputs ~inputs =
  SlicingParameters.debug ~level:3
    "select_entry_point_and_some_inputs_outputs %a"
    Kernel_function.pretty kf ;
  let set = let selection = !Db.Slicing.Select.select_entry_point_internal kf mark in
    add_to_selection set selection
  in
  let set =
    if (Locations.Zone.equal Locations.Zone.bottom outputs)
    then set
    else let selection = !Db.Slicing.Select.select_modified_output_zone_internal kf outputs mark in
      add_to_selection set selection
  in
  let set =
    if (Locations.Zone.equal Locations.Zone.bottom inputs)
    then set
    else let selection = !Db.Slicing.Select.select_zone_at_entry_point_internal kf inputs mark in
      add_to_selection set selection
  in if return
    then let selection = !Db.Slicing.Select.select_return_internal kf mark in
      add_to_selection set selection
    else set