let build_cfg ?(do_dot) kf =
  if Wp_parameters.RTE.get () 
  then WpAnnot.compute_rte_for kf ;
  let cfg, unreached = Cil2cfg.get kf in
  WpAnnot.process_unreached_annots cfg unreached ;
  let do_dot = match do_dot with
    | None -> Wp_parameters.Dot.get ()
    | Some b -> b
  in
  !Db.progress () ;
  let dot = if do_dot then Some (Cil2cfg.dot_cfg cfg) else None in
  cfg, dot