let doInstr stmt instr data =
    match instr with
      | Set (lval, exp, _) ->
          let l_dpds, exact, l_zone = Datascope.get_lval_zones stmt lval in
          let r_dpds = Data.exp_zone stmt exp in
          let used, data = compute_new_data data l_zone l_dpds exact r_dpds in
          let _ = if used then add_used_stmt stmt in
              Dataflow.Done data
      |  Call (lvaloption,funcexp,args,_) ->
          let used, data = process_call data stmt lvaloption funcexp args in
          let _ = if used then add_used_stmt stmt in
            Dataflow.Done data
      | _ -> Dataflow.Default