let do_labels wenv e obj =
let do_lab l o =
Wp_parameters.debug ~level:3 "[do_label] process %a@."
Macros.pp_logic_label l;
W.process_at_vars wenv l o
in
let do_llab lname obj = do_lab (LogicLabel lname) obj in
let obj = do_llab "Here" obj in
(* TODO : what about \old in statement contracts *)
let v = CFG.E.dst e in
match !v with
| Cil2cfg.Vstart _ -> assert false
| Cil2cfg.VfctIn _ -> do_llab "Pre" obj
| Cil2cfg.VfctOut _ -> do_llab "Post" obj
| Cil2cfg.Vexit _ -> obj
| _ -> do_lab (StmtLabel (ref (Cil2cfg.VL.stmt v))) obj