let doStmt (stmt: Cil_types.stmt) (state: t) =
      pdg_debug "doStmt %d @." stmt.sid ;

    (* Notice that the stmt labels are processed while processing the jumps. *)

    match stmt.skind with
      | Instr _
        -> Dataflow.SDefault

      | Block blk
        -> BuildPdg.process_block current_pdg stmt blk;
           Dataflow.SDefault
      | UnspecifiedSequence seq ->
          BuildPdg.process_block current_pdg stmt
            (Cil.block_from_unspecified_sequence seq);
          Dataflow.SDefault

      | Switch (exp,_,_,_)
      | If (exp,_,_,_) ->
          process_condition ctrl_dpds_infos current_pdg state stmt exp;
          Dataflow.SDefault

      | Return (exp,_) ->
          process_return current_function current_pdg state stmt exp;
          Dataflow.SDefault

      | Continue _
      | Break _
      | Goto _ ->
          process_jump_stmt current_pdg ctrl_dpds_infos stmt;
          Dataflow.SDefault

      | Loop _ ->
          process_loop_stmt current_pdg ctrl_dpds_infos stmt;
          Dataflow.SDefault

      | TryExcept (_, _, _, _)
      | TryFinally (_, _, _)
          -> Dataflow.SDefault