let get_jump_controled_stmts ctrl_dpds_infos jump =
  let lex_succ_graph, infos = ctrl_dpds_infos in
  let controled_stmts =
    try
      let lex_suc = Lexical_successors.find lex_succ_graph jump in
      Pdg_parameters.debug ~level:2 "lex_succ %d = %d" jump.sid lex_suc.sid;
      match jump.succs with
      | [label] ->
          Pdg_parameters.debug ~level:2 "jump succ %d = %d" jump.sid label.sid;
          if lex_suc.sid = label.sid then begin
            (* the label is the jump lexical successor: no dpds *)
            Pdg_parameters.debug "useless jump %d" jump.sid;
            S.empty
          end else
            let pdb_jump_lex_suc = pd_b_but_not_a infos jump lex_suc in
            let pdb_lex_suc_label = pd_b_but_not_a infos lex_suc label in
            let pdb_lex_suc_label = S.remove lex_suc pdb_lex_suc_label in
            S.union pdb_jump_lex_suc pdb_lex_suc_label
      | _ -> assert false
    with Not_found ->
      Pdg_parameters.debug "lex_succ %d = (none)" jump.sid;
      (* no lexical successor : every postdom (jump) depend on jump. *)
      let _, pd_jump = (get_postdoms infos ~without:false jump) in
      S.remove jump pd_jump
  in
  Pdg_parameters.debug "controled_stmt for jump %d = %a"
    jump.sid S.pretty controled_stmts;
  let controled_stmt_list = S.elements controled_stmts in
  controled_stmt_list