let backward_data_scope allstmts modif_stmts s =
States.clear ();
List.iter (fun s -> States.add s.sid State.NotSeen) allstmts;
let modified s = SidSet.mem s.sid modif_stmts in
States.replace s.sid State.Start;
let stmts = s.preds in
let module Computer = BackwardScope (struct let modified = modified end) in
let module Compute = Dataflow.BackwardsDataFlow(Computer) in
Compute.compute stmts