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