sig
  type syntactic_context =
      SyNone
    | SyBinOp of Cil_types.binop * Cil_types.exp * Cil_types.exp
    | SyUnOp of Cil_types.exp
    | SyMem of Cil_types.lval
    | SyMemLogic of Cil_types.term
    | SySep of Cil_types.exp * Cil_types.exp
  val start_stmt : Cil_types.kinstr -> unit
  val end_stmt : unit -> unit
  val current_stmt : unit -> Cil_types.kinstr
  val set_syntactic_context : CilE.syntactic_context -> unit
  val get_syntactic_context :
    unit -> Cil_types.kinstr * CilE.syntactic_context
  type warn_origin = { warn_emitter : Emitter.t; warn_deps : State.t list; }
  type alarm_behavior =
      Aignore
    | Alog of CilE.warn_origin
    | Acall of (unit -> unit)
  val stop_if_stop_at_first_alarm_mode : unit -> unit
  type warn_mode = {
    unspecified : CilE.alarm_behavior;
    others : CilE.alarm_behavior;
    imprecision_tracing : CilE.alarm_behavior;
  }
  val warn_all_mode : CilE.warn_origin -> CilE.warn_mode
  val warn_none_mode : CilE.warn_mode
  val warn_div : CilE.warn_mode -> unit
  val warn_shift : CilE.warn_mode -> int -> unit
  val warn_shift_left_positive : CilE.warn_mode -> unit
  val warn_mem_read : CilE.warn_mode -> unit
  val warn_mem_write : CilE.warn_mode -> unit
  val warn_signed_overflow :
    CilE.warn_mode -> Int64.t option -> Int64.t option -> unit
  val warn_index : CilE.warn_mode -> string -> string -> unit
  val warn_pointer_comparison : CilE.warn_mode -> unit
  val warn_result_nan_infinite : CilE.warn_mode -> unit
  val warn_uninitialized : CilE.warn_mode -> unit
  val warn_escapingaddr : CilE.warn_mode -> unit
  val warn_separated : CilE.warn_mode -> unit
end