let callenv env stmt args =
    let pre_label = Clabels.CallAt stmt.sid in
    let m_pre = L.mem_at env pre_label in
    let m_post = L.mem_at env Clabels.Here in
    let translate_arg e =
      match expr m_pre e with
        | Warning(source,reason) ->
            Datalib.Collector.add_warning ~source ~reason
              "Can not call function, no translation for parameter '%a'"
              !Ast_printer.d_exp e ;
            raise Failed
        | Result v -> v
    in {
      callsite = pre_label ;
      m_pre  = m_pre ;
      m_post = m_post ;
      v_args = List.map translate_arg args ;
    }