let compute_dom kf =
let start = Kernel_function.find_first_stmt kf in
try
let _ = Dom.find start.sid in
Parameters.feedback "computed for function %a"
Kernel_function.pretty_name kf;
with Not_found ->
Parameters.feedback "computing for function %a"
Kernel_function.pretty_name kf;
let f = kf.fundec in
let stmts = match f with
| Definition (f,_) -> f.sallstmts
| Declaration _ -> Parameters.fatal "cannot compute for a leaf function"
in
List.iter (fun s -> Dom.add s.sid DomSet.Top) stmts;
Dom.replace start.sid (DomSet.Value (Stmt.Set.singleton start));
DomCompute.compute [start];
Parameters.feedback "done for function %a"
Kernel_function.pretty_name kf