sig
  val info : ('a, Format.formatter, unit) Pervasives.format -> 'a
  val err : ('a, Format.formatter, unit) Pervasives.format -> 'a
  val log :
    ?once:bool -> ('a, Format.formatter, unit) Pervasives.format -> 'a
  val warn :
    ?once:bool -> ('a, Format.formatter, unit) Pervasives.format -> 'a
  val source : Cil_types.location -> Log.source
  val warnOpt : ('a, Format.formatter, unit, unit) Pervasives.format4 -> 'a
  val warning : ('a, Format.formatter, unit, unit) Pervasives.format4 -> 'a
  val error : ('a, Format.formatter, unit, unit) Pervasives.format4 -> 'a
  val abort : ('a, Format.formatter, unit, 'b) Pervasives.format4 -> 'a
  val fatal : ('a, Format.formatter, unit, 'b) Pervasives.format4 -> 'a
  val error_loc :
    string * int ->
    ('a, Format.formatter, unit, unit) Pervasives.format4 -> 'a
  val abort_loc :
    string * int -> ('a, Format.formatter, unit, 'b) Pervasives.format4 -> 'a
  val initCIL : (unit -> unit) -> unit
  type theMachine = private {
    mutable msvcMode : bool;
    mutable useLogicalOperators : bool;
    mutable theMachine : Cil_types.mach;
    mutable lowerConstants : bool;
    mutable insertImplicitCasts : bool;
    mutable little_endian : bool;
    mutable char_is_unsigned : bool;
    mutable underscore_name : bool;
    mutable enum_are_signed : bool;
    mutable stringLiteralType : Cil_types.typ;
    mutable upointType : Cil_types.typ;
    mutable wcharKind : Cil_types.ikind;
    mutable wcharType : Cil_types.typ;
    mutable ptrdiffKind : Cil_types.ikind;
    mutable ptrdiffType : Cil_types.typ;
    mutable typeOfSizeOf : Cil_types.typ;
    mutable kindOfSizeOf : Cil_types.ikind;
  }
  val theMachine : Cil.theMachine
  val selfMachine : Project.Computation.t
  val set_msvcMode : bool -> unit
  type lineDirectiveStyle =
      LineComment
    | LineCommentSparse
    | LinePreprocessorInput
    | LinePreprocessorOutput
  type miscState = {
    mutable lineDirectiveStyle : Cil.lineDirectiveStyle option;
    mutable print_CIL_Input : bool;
    mutable printCilAsIs : bool;
    mutable lineLength : int;
    mutable warnTruncate : bool;
  }
  val miscState : Cil.miscState
  type featureDescr = {
    fd_enabled : bool Pervasives.ref;
    fd_name : string;
    fd_description : string;
    fd_extraopt : (string * Arg.spec * string) list;
    fd_doit : Cil_types.file -> unit;
    fd_post_check : bool;
  }
  val compareLoc : Cil_types.location -> Cil_types.location -> int
  val emptyFunction : string -> Cil_types.fundec
  val setFormals : Cil_types.fundec -> Cil_types.varinfo list -> unit
  val getReturnType : Cil_types.typ -> Cil_types.typ
  val setReturnTypeVI : Cil_types.varinfo -> Cil_types.typ -> unit
  val setReturnType : Cil_types.fundec -> Cil_types.typ -> unit
  val setFunctionType : Cil_types.fundec -> Cil_types.typ -> unit
  val setFunctionTypeMakeFormals : Cil_types.fundec -> Cil_types.typ -> unit
  val setMaxId : Cil_types.fundec -> unit
  val selfFormalsDecl : Project.Computation.t
  val makeFormalsVarDecl :
    string * Cil_types.typ * Cil_types.attributes -> Cil_types.varinfo
  val setFormalsDecl : Cil_types.varinfo -> Cil_types.typ -> unit
  val unsafeSetFormalsDecl :
    Cil_types.varinfo -> Cil_types.varinfo list -> unit
  val getFormalsDecl : Cil_types.varinfo -> Cil_types.varinfo list
  val dummyFile : Cil_types.file
  val getGlobInit : ?main_name:string -> Cil_types.file -> Cil_types.fundec
  val iterGlobals : Cil_types.file -> (Cil_types.global -> unit) -> unit
  val foldGlobals :
    Cil_types.file -> ('-> Cil_types.global -> 'a) -> '-> 'a
  val mapGlobals :
    Cil_types.file -> (Cil_types.global -> Cil_types.global) -> unit
  val findOrCreateFunc :
    Cil_types.file -> string -> Cil_types.typ -> Cil_types.varinfo
  module Sid : sig val next : unit -> int val get : unit -> int end
  val new_exp : Cil_types.exp_node -> Cil_types.exp
  val dummy_exp : Cil_types.exp_node -> Cil_types.exp
  val is_case_label : Cil_types.label -> bool
  val prepareCFG : ?keepSwitch:bool -> Cil_types.fundec -> unit
  val computeCFGInfo : Cil_types.fundec -> bool -> unit
  val copyFunction : Cil_types.fundec -> string -> Cil_types.fundec
  val pushGlobal :
    Cil_types.global ->
    types:Cil_types.global list Pervasives.ref ->
    variables:Cil_types.global list Pervasives.ref -> unit
  val invalidStmt : Cil_types.stmt
  module BuiltinFunctions :
    sig
      val self : Project.Computation.t
      val select :
        Kind.how ->
        Project.Computation.selection -> Project.Computation.selection
      val depend : Project.Computation.t -> unit
      val name : string
      val mark_as_computed : ?project:Project.project -> unit -> unit
      val is_computed : ?project:Project.project -> unit -> bool
      val do_not_save : unit -> unit
      module Datatype : Project.Datatype.S
      val howto_marshal : (Datatype.t -> 'a) -> ('-> Datatype.t) -> unit
      type key = string
      type data = Cil_types.typ * Cil_types.typ list * bool
      val replace : key -> data -> unit
      val add : key -> data -> unit
      val clear : unit -> unit
      val length : unit -> int
      val iter : (key -> data -> unit) -> unit
      val fold : (key -> data -> '-> 'a) -> '-> 'a
      val memo : ?change:(data -> data) -> (key -> data) -> key -> data
      val find : key -> data
      val find_all : key -> data list
      val unsafe_find : key -> data
      val mem : key -> bool
      val remove : key -> unit
    end
  val builtinLoc : Cil_types.location
  val range_loc :
    Cil_types.location -> Cil_types.location -> Cil_types.location
  val makeZeroInit : Cil_types.typ -> Cil_types.init
  val foldLeftCompound :
    implicit:bool ->
    doinit:(Cil_types.offset -> Cil_types.init -> Cil_types.typ -> '-> 'a) ->
    ct:Cil_types.typ ->
    initl:(Cil_types.offset * Cil_types.init) list -> acc:'-> 'a
  val voidType : Cil_types.typ
  val isVoidType : Cil_types.typ -> bool
  val isVoidPtrType : Cil_types.typ -> bool
  val intType : Cil_types.typ
  val uintType : Cil_types.typ
  val longType : Cil_types.typ
  val ulongType : Cil_types.typ
  val ulongLongType : Cil_types.typ
  val charType : Cil_types.typ
  val charPtrType : Cil_types.typ
  val charConstPtrType : Cil_types.typ
  val voidPtrType : Cil_types.typ
  val voidConstPtrType : Cil_types.typ
  val intPtrType : Cil_types.typ
  val uintPtrType : Cil_types.typ
  val floatType : Cil_types.typ
  val doubleType : Cil_types.typ
  val longDoubleType : Cil_types.typ
  val isSigned : Cil_types.ikind -> bool
  val isSignedInteger : Cil_types.typ -> bool
  val mkCompInfo :
    bool ->
    string ->
    (Cil_types.compinfo ->
     (string * Cil_types.typ * int option * Cil_types.attributes *
      Cil_types.location)
     list) ->
    Cil_types.attributes -> Cil_types.compinfo
  val copyCompInfo : Cil_types.compinfo -> string -> Cil_types.compinfo
  val missingFieldName : string
  val compFullName : Cil_types.compinfo -> string
  val isCompleteType : Cil_types.typ -> bool
  val unrollType : Cil_types.typ -> Cil_types.typ
  val unrollTypeDeep : Cil_types.typ -> Cil_types.typ
  val separateStorageModifiers :
    Cil_types.attribute list ->
    Cil_types.attribute list * Cil_types.attribute list
  val isCharType : Cil_types.typ -> bool
  val isCharPtrType : Cil_types.typ -> bool
  val isCharArrayType : Cil_types.typ -> bool
  val isIntegralType : Cil_types.typ -> bool
  val isLogicIntegralType : Cil_types.logic_type -> bool
  val isFloatingType : Cil_types.typ -> bool
  val isLogicFloatType : Cil_types.logic_type -> bool
  val isLogicRealOrFloatType : Cil_types.logic_type -> bool
  val isLogicRealType : Cil_types.logic_type -> bool
  val isArithmeticType : Cil_types.typ -> bool
  val isLogicArithmeticType : Cil_types.logic_type -> bool
  val isPointerType : Cil_types.typ -> bool
  val isTypeTagType : Cil_types.logic_type -> bool
  val isFunctionType : Cil_types.typ -> bool
  val argsToList :
    (string * Cil_types.typ * Cil_types.attributes) list option ->
    (string * Cil_types.typ * Cil_types.attributes) list
  val isArrayType : Cil_types.typ -> bool
  val isStructOrUnionType : Cil_types.typ -> bool
  exception LenOfArray
  val lenOfArray : Cil_types.exp option -> int
  val lenOfArray64 : Cil_types.exp option -> Int64.t
  val getCompField : Cil_types.compinfo -> string -> Cil_types.fieldinfo
  type existsAction = ExistsTrue | ExistsFalse | ExistsMaybe
  val existsType :
    (Cil_types.typ -> Cil.existsAction) -> Cil_types.typ -> bool
  val splitFunctionType :
    Cil_types.typ ->
    Cil_types.typ *
    (string * Cil_types.typ * Cil_types.attributes) list option * bool *
    Cil_types.attributes
  val splitFunctionTypeVI :
    Cil_types.varinfo ->
    Cil_types.typ *
    (string * Cil_types.typ * Cil_types.attributes) list option * bool *
    Cil_types.attributes
  val typeSig : Cil_types.typ -> Cil_types.typsig
  val typeSigWithAttrs :
    ?ignoreSign:bool ->
    (Cil_types.attributes -> Cil_types.attributes) ->
    Cil_types.typ -> Cil_types.typsig
  val setTypeSigAttrs :
    Cil_types.attributes -> Cil_types.typsig -> Cil_types.typsig
  val typeSigAttrs : Cil_types.typsig -> Cil_types.attributes
  val makeVarinfo :
    ?logic:bool ->
    ?generated:bool ->
    bool -> bool -> string -> Cil_types.typ -> Cil_types.varinfo
  val makeFormalVar :
    Cil_types.fundec ->
    ?where:string -> string -> Cil_types.typ -> Cil_types.varinfo
  val makeLocalVar :
    Cil_types.fundec ->
    ?generated:bool ->
    ?insert:bool -> string -> Cil_types.typ -> Cil_types.varinfo
  val makePseudoVar : Cil_types.typ -> Cil_types.varinfo
  val makeTempVar :
    Cil_types.fundec ->
    ?name:string ->
    ?descr:string -> ?descrpure:bool -> Cil_types.typ -> Cil_types.varinfo
  val makeGlobalVar :
    ?logic:bool ->
    ?generated:bool -> string -> Cil_types.typ -> Cil_types.varinfo
  val copyVarinfo : Cil_types.varinfo -> string -> Cil_types.varinfo
  val varinfo_from_vid : int -> Cil_types.varinfo
  val varinfos_self : Project.Computation.t
  val lastOffset : Cil_types.offset -> Cil_types.offset
  val lastTermOffset : Cil_types.term_offset -> Cil_types.term_offset
  val addOffsetLval : Cil_types.offset -> Cil_types.lval -> Cil_types.lval
  val addTermOffsetLval :
    Cil_types.term_offset -> Cil_types.term_lval -> Cil_types.term_lval
  val addOffset : Cil_types.offset -> Cil_types.offset -> Cil_types.offset
  val addTermOffset :
    Cil_types.term_offset -> Cil_types.term_offset -> Cil_types.term_offset
  val removeOffsetLval : Cil_types.lval -> Cil_types.lval * Cil_types.offset
  val removeOffset : Cil_types.offset -> Cil_types.offset * Cil_types.offset
  val typeOfLval : Cil_types.lval -> Cil_types.typ
  val typeOfTermLval : Cil_types.term_lval -> Cil_types.logic_type
  val typeOffset : Cil_types.typ -> Cil_types.offset -> Cil_types.typ
  val typeTermOffset :
    Cil_types.logic_type -> Cil_types.term_offset -> Cil_types.logic_type
  val zero : Cil_types.exp
  val one : Cil_types.exp
  val mone : Cil_types.exp
  val kinteger64 : Cil_types.ikind -> int64 -> Cil_types.exp
  val kinteger : Cil_types.ikind -> int -> Cil_types.exp
  val integer : int -> Cil_types.exp
  val isInteger : Cil_types.exp -> int64 option
  val i64_to_int : int64 -> int
  val isConstant : Cil_types.exp -> bool
  val isIntegerConstant : Cil_types.exp -> bool
  val isConstantOffset : Cil_types.offset -> bool
  val isZero : Cil_types.exp -> bool
  val isLogicZero : Cil_types.term -> bool
  val isLogicNull : Cil_types.term -> bool
  val get_status : Cil_types.code_annotation -> Cil_types.annot_status
  val reduce_multichar : Cil_types.typ -> int64 list -> int64
  val interpret_character_constant :
    int64 list -> Cil_types.constant * Cil_types.typ
  val charConstToInt : char -> Cil_types.constant
  val constFold : bool -> Cil_types.exp -> Cil_types.exp
  val constFoldTermNodeAtTop : Cil_types.term_node -> Cil_types.term_node
  val constFoldTerm : bool -> Cil_types.term -> Cil_types.term
  val constFoldBinOp :
    bool ->
    Cil_types.binop ->
    Cil_types.exp -> Cil_types.exp -> Cil_types.typ -> Cil_types.exp
  val compareExp : Cil_types.exp -> Cil_types.exp -> bool
  val compareLval : Cil_types.lval -> Cil_types.lval -> bool
  val increm : Cil_types.exp -> int -> Cil_types.exp
  val increm64 : Cil_types.exp -> int64 -> Cil_types.exp
  val var : Cil_types.varinfo -> Cil_types.lval
  val mkAddrOf : Cil_types.lval -> Cil_types.exp
  val mkAddrOrStartOf : Cil_types.lval -> Cil_types.exp
  val mkMem : addr:Cil_types.exp -> off:Cil_types.offset -> Cil_types.lval
  val mkTermMem :
    addr:Cil_types.term -> off:Cil_types.term_offset -> Cil_types.term_lval
  val mkString : string -> Cil_types.exp
  val need_cast : Cil_types.typ -> Cil_types.typ -> bool
  val mkCastT :
    e:Cil_types.exp ->
    oldt:Cil_types.typ -> newt:Cil_types.typ -> Cil_types.exp
  val mkCast : e:Cil_types.exp -> newt:Cil_types.typ -> Cil_types.exp
  val stripTermCasts : Cil_types.term -> Cil_types.term
  val stripCasts : Cil_types.exp -> Cil_types.exp
  val stripInfo : Cil_types.exp -> Cil_types.exp
  val stripCastsAndInfo : Cil_types.exp -> Cil_types.exp
  val stripCastsButLastInfo : Cil_types.exp -> Cil_types.exp
  val exp_info_of_term : Cil_types.term -> Cil_types.exp_info
  val term_of_exp_info :
    Cil_types.term_node -> Cil_types.exp_info -> Cil_types.term
  val map_under_info :
    (Cil_types.exp -> Cil_types.exp) -> Cil_types.exp -> Cil_types.exp
  val app_under_info : (Cil_types.exp -> unit) -> Cil_types.exp -> unit
  val typeOf : Cil_types.exp -> Cil_types.typ
  val typeOf_pointed : Cil_types.typ -> Cil_types.typ
  val typeOf_array_elem : Cil_types.typ -> Cil_types.typ
  val is_fully_arithmetic : Cil_types.typ -> bool
  val parseInt : string -> Cil_types.exp
  val mkStmt : ?valid_sid:bool -> Cil_types.stmtkind -> Cil_types.stmt
  val mkStmtCfg :
    before:bool ->
    new_stmtkind:Cil_types.stmtkind ->
    ref_stmt:Cil_types.stmt -> Cil_types.stmt
  val mkBlock : Cil_types.stmt list -> Cil_types.block
  val mkStmtCfgBlock : Cil_types.stmt list -> Cil_types.stmt
  val mkStmtOneInstr : Cil_types.instr -> Cil_types.stmt
  val mkEmptyStmt : ?loc:Cil_types.location -> unit -> Cil_types.stmt
  val dummyInstr : Cil_types.instr
  val dummyStmt : Cil_types.stmt
  val mkWhile :
    guard:Cil_types.exp -> body:Cil_types.stmt list -> Cil_types.stmt list
  val mkForIncr :
    iter:Cil_types.varinfo ->
    first:Cil_types.exp ->
    stopat:Cil_types.exp ->
    incr:Cil_types.exp -> body:Cil_types.stmt list -> Cil_types.stmt list
  val mkFor :
    start:Cil_types.stmt list ->
    guard:Cil_types.exp ->
    next:Cil_types.stmt list ->
    body:Cil_types.stmt list -> Cil_types.stmt list
  val block_from_unspecified_sequence :
    (Cil_types.stmt * Cil_types.lval list * Cil_types.lval list *
     Cil_types.lval list)
    list -> Cil_types.block
  type attributeClass = AttrName of bool | AttrFunType of bool | AttrType
  val registerAttribute : string -> Cil.attributeClass -> unit
  val removeAttribute : string -> unit
  val attributeClass : string -> Cil.attributeClass
  val partitionAttributes :
    default:Cil.attributeClass ->
    Cil_types.attributes ->
    Cil_types.attribute list * Cil_types.attribute list *
    Cil_types.attribute list
  val addAttribute :
    Cil_types.attribute -> Cil_types.attributes -> Cil_types.attributes
  val addAttributes :
    Cil_types.attribute list -> Cil_types.attributes -> Cil_types.attributes
  val dropAttribute : string -> Cil_types.attributes -> Cil_types.attributes
  val dropAttributes :
    string list -> Cil_types.attributes -> Cil_types.attributes
  val filterAttributes :
    string -> Cil_types.attributes -> Cil_types.attributes
  val filter_qualifier_attributes :
    Cil_types.attributes -> Cil_types.attributes
  val hasAttribute : string -> Cil_types.attributes -> bool
  val mkAttrAnnot : string -> string
  val attributeName : Cil_types.attribute -> string
  val findAttribute :
    string -> Cil_types.attribute list -> Cil_types.attrparam list
  val typeAttrs : Cil_types.typ -> Cil_types.attribute list
  val typeAttr : Cil_types.typ -> Cil_types.attribute list
  val setTypeAttrs : Cil_types.typ -> Cil_types.attributes -> Cil_types.typ
  val typeAddAttributes :
    Cil_types.attribute list -> Cil_types.typ -> Cil_types.typ
  val typeRemoveAttributes : string list -> Cil_types.typ -> Cil_types.typ
  val expToAttrParam : Cil_types.exp -> Cil_types.attrparam
  val exists_attribute_deep :
    (Cil_types.attribute -> bool) -> Cil_types.typ -> string list option
  exception NotAnAttrParam of Cil_types.exp
  type 'a visitAction =
      SkipChildren
    | DoChildren
    | JustCopy
    | JustCopyPost of ('-> 'a)
    | ChangeTo of 'a
    | ChangeToPost of 'a * ('-> 'a)
    | ChangeDoChildrenPost of 'a * ('-> 'a)
  type visitor_behavior
  val inplace_visit : unit -> Cil.visitor_behavior
  val copy_visit : unit -> Cil.visitor_behavior
  val is_copy_behavior : Cil.visitor_behavior -> bool
  val reset_behavior_varinfo : Cil.visitor_behavior -> unit
  val reset_behavior_compinfo : Cil.visitor_behavior -> unit
  val reset_behavior_enuminfo : Cil.visitor_behavior -> unit
  val reset_behavior_enumitem : Cil.visitor_behavior -> unit
  val reset_behavior_typeinfo : Cil.visitor_behavior -> unit
  val reset_behavior_stmt : Cil.visitor_behavior -> unit
  val reset_behavior_logic_info : Cil.visitor_behavior -> unit
  val reset_behavior_fieldinfo : Cil.visitor_behavior -> unit
  val get_varinfo :
    Cil.visitor_behavior -> Cil_types.varinfo -> Cil_types.varinfo
  val get_compinfo :
    Cil.visitor_behavior -> Cil_types.compinfo -> Cil_types.compinfo
  val get_enuminfo :
    Cil.visitor_behavior -> Cil_types.enuminfo -> Cil_types.enuminfo
  val get_enumitem :
    Cil.visitor_behavior -> Cil_types.enumitem -> Cil_types.enumitem
  val get_typeinfo :
    Cil.visitor_behavior -> Cil_types.typeinfo -> Cil_types.typeinfo
  val get_stmt : Cil.visitor_behavior -> Cil_types.stmt -> Cil_types.stmt
  val get_logic_info :
    Cil.visitor_behavior -> Cil_types.logic_info -> Cil_types.logic_info
  val get_fieldinfo :
    Cil.visitor_behavior -> Cil_types.fieldinfo -> Cil_types.fieldinfo
  val get_logic_var :
    Cil.visitor_behavior -> Cil_types.logic_var -> Cil_types.logic_var
  val get_original_varinfo :
    Cil.visitor_behavior -> Cil_types.varinfo -> Cil_types.varinfo
  val get_original_compinfo :
    Cil.visitor_behavior -> Cil_types.compinfo -> Cil_types.compinfo
  val get_original_enuminfo :
    Cil.visitor_behavior -> Cil_types.enuminfo -> Cil_types.enuminfo
  val get_original_enumitem :
    Cil.visitor_behavior -> Cil_types.enumitem -> Cil_types.enumitem
  val get_original_typeinfo :
    Cil.visitor_behavior -> Cil_types.typeinfo -> Cil_types.typeinfo
  val get_original_stmt :
    Cil.visitor_behavior -> Cil_types.stmt -> Cil_types.stmt
  val get_original_logic_info :
    Cil.visitor_behavior -> Cil_types.logic_info -> Cil_types.logic_info
  val get_original_fieldinfo :
    Cil.visitor_behavior -> Cil_types.fieldinfo -> Cil_types.fieldinfo
  val get_original_logic_var :
    Cil.visitor_behavior -> Cil_types.logic_var -> Cil_types.logic_var
  val set_varinfo :
    Cil.visitor_behavior -> Cil_types.varinfo -> Cil_types.varinfo -> unit
  val set_compinfo :
    Cil.visitor_behavior -> Cil_types.compinfo -> Cil_types.compinfo -> unit
  val set_enuminfo :
    Cil.visitor_behavior -> Cil_types.enuminfo -> Cil_types.enuminfo -> unit
  val set_enumitem :
    Cil.visitor_behavior -> Cil_types.enumitem -> Cil_types.enumitem -> unit
  val set_typeinfo :
    Cil.visitor_behavior -> Cil_types.typeinfo -> Cil_types.typeinfo -> unit
  val set_stmt :
    Cil.visitor_behavior -> Cil_types.stmt -> Cil_types.stmt -> unit
  val set_logic_info :
    Cil.visitor_behavior ->
    Cil_types.logic_info -> Cil_types.logic_info -> unit
  val set_fieldinfo :
    Cil.visitor_behavior ->
    Cil_types.fieldinfo -> Cil_types.fieldinfo -> unit
  val set_logic_var :
    Cil.visitor_behavior ->
    Cil_types.logic_var -> Cil_types.logic_var -> unit
  val set_orig_varinfo :
    Cil.visitor_behavior -> Cil_types.varinfo -> Cil_types.varinfo -> unit
  val set_orig_compinfo :
    Cil.visitor_behavior -> Cil_types.compinfo -> Cil_types.compinfo -> unit
  val set_orig_enuminfo :
    Cil.visitor_behavior -> Cil_types.enuminfo -> Cil_types.enuminfo -> unit
  val set_orig_enumitem :
    Cil.visitor_behavior -> Cil_types.enumitem -> Cil_types.enumitem -> unit
  val set_orig_typeinfo :
    Cil.visitor_behavior -> Cil_types.typeinfo -> Cil_types.typeinfo -> unit
  val set_orig_stmt :
    Cil.visitor_behavior -> Cil_types.stmt -> Cil_types.stmt -> unit
  val set_orig_logic_info :
    Cil.visitor_behavior ->
    Cil_types.logic_info -> Cil_types.logic_info -> unit
  val set_orig_fieldinfo :
    Cil.visitor_behavior ->
    Cil_types.fieldinfo -> Cil_types.fieldinfo -> unit
  val set_orig_logic_var :
    Cil.visitor_behavior ->
    Cil_types.logic_var -> Cil_types.logic_var -> unit
  class type cilVisitor =
    object
      method behavior : Cil.visitor_behavior
      method current_func : Cil_types.fundec option
      method current_stmt : Cil_types.stmt option
      method fill_global_tables : unit
      method get_filling_actions : (unit -> unit) Queue.t
      method plain_copy_visitor : Cil.cilVisitor
      method pop_stmt : Cil_types.stmt -> unit
      method push_stmt : Cil_types.stmt -> unit
      method queueInstr : Cil_types.instr list -> unit
      method reset_current_func : unit -> unit
      method set_current_func : Cil_types.fundec -> unit
      method set_logic_tables : unit -> unit
      method unqueueInstr : unit -> Cil_types.instr list
      method vannotation :
        Cil_types.global_annotation ->
        Cil_types.global_annotation Cil.visitAction
      method vassigns :
        Cil_types.identified_term Cil_types.assigns ->
        Cil_types.identified_term Cil_types.assigns Cil.visitAction
      method vattr :
        Cil_types.attribute -> Cil_types.attribute list Cil.visitAction
      method vattrparam :
        Cil_types.attrparam -> Cil_types.attrparam Cil.visitAction
      method vbehavior :
        Cil_types.funbehavior -> Cil_types.funbehavior Cil.visitAction
      method vblock : Cil_types.block -> Cil_types.block Cil.visitAction
      method vcode_annot :
        Cil_types.code_annotation ->
        Cil_types.code_annotation Cil.visitAction
      method vcompinfo :
        Cil_types.compinfo -> Cil_types.compinfo Cil.visitAction
      method venuminfo :
        Cil_types.enuminfo -> Cil_types.enuminfo Cil.visitAction
      method venumitem :
        Cil_types.enumitem -> Cil_types.enumitem Cil.visitAction
      method vexpr : Cil_types.exp -> Cil_types.exp Cil.visitAction
      method vfieldinfo :
        Cil_types.fieldinfo -> Cil_types.fieldinfo Cil.visitAction
      method vfile : Cil_types.file -> Cil_types.file Cil.visitAction
      method vfunc : Cil_types.fundec -> Cil_types.fundec Cil.visitAction
      method vglob :
        Cil_types.global -> Cil_types.global list Cil.visitAction
      method vimpact_pragma :
        Cil_types.term Cil_types.impact_pragma ->
        Cil_types.term Cil_types.impact_pragma Cil.visitAction
      method vinit :
        Cil_types.varinfo ->
        Cil_types.offset -> Cil_types.init -> Cil_types.init Cil.visitAction
      method vinitoffs : Cil_types.offset -> Cil_types.offset Cil.visitAction
      method vinst : Cil_types.instr -> Cil_types.instr list Cil.visitAction
      method vlogic_ctor_info_decl :
        Cil_types.logic_ctor_info ->
        Cil_types.logic_ctor_info Cil.visitAction
      method vlogic_ctor_info_use :
        Cil_types.logic_ctor_info ->
        Cil_types.logic_ctor_info Cil.visitAction
      method vlogic_info_decl :
        Cil_types.logic_info -> Cil_types.logic_info Cil.visitAction
      method vlogic_info_use :
        Cil_types.logic_info -> Cil_types.logic_info Cil.visitAction
      method vlogic_type :
        Cil_types.logic_type -> Cil_types.logic_type Cil.visitAction
      method vlogic_type_def :
        Cil_types.logic_type_def -> Cil_types.logic_type_def Cil.visitAction
      method vlogic_type_info_decl :
        Cil_types.logic_type_info ->
        Cil_types.logic_type_info Cil.visitAction
      method vlogic_type_info_use :
        Cil_types.logic_type_info ->
        Cil_types.logic_type_info Cil.visitAction
      method vlogic_var_decl :
        Cil_types.logic_var -> Cil_types.logic_var Cil.visitAction
      method vlogic_var_use :
        Cil_types.logic_var -> Cil_types.logic_var Cil.visitAction
      method vloop_pragma :
        Cil_types.term Cil_types.loop_pragma ->
        Cil_types.term Cil_types.loop_pragma Cil.visitAction
      method vlval : Cil_types.lval -> Cil_types.lval Cil.visitAction
      method voffs : Cil_types.offset -> Cil_types.offset Cil.visitAction
      method vpredicate :
        Cil_types.predicate -> Cil_types.predicate Cil.visitAction
      method vpredicate_named :
        Cil_types.predicate Cil_types.named ->
        Cil_types.predicate Cil_types.named Cil.visitAction
      method vquantifiers :
        Cil_types.quantifiers -> Cil_types.quantifiers Cil.visitAction
      method vslice_pragma :
        Cil_types.term Cil_types.slice_pragma ->
        Cil_types.term Cil_types.slice_pragma Cil.visitAction
      method vspec : Cil_types.funspec -> Cil_types.funspec Cil.visitAction
      method vstmt : Cil_types.stmt -> Cil_types.stmt Cil.visitAction
      method vterm : Cil_types.term -> Cil_types.term Cil.visitAction
      method vterm_lhost :
        Cil_types.term_lhost -> Cil_types.term_lhost Cil.visitAction
      method vterm_lval :
        Cil_types.term_lval -> Cil_types.term_lval Cil.visitAction
      method vterm_node :
        Cil_types.term_node -> Cil_types.term_node Cil.visitAction
      method vterm_offset :
        Cil_types.term_offset -> Cil_types.term_offset Cil.visitAction
      method vtype : Cil_types.typ -> Cil_types.typ Cil.visitAction
      method vvdec : Cil_types.varinfo -> Cil_types.varinfo Cil.visitAction
      method vvrbl : Cil_types.varinfo -> Cil_types.varinfo Cil.visitAction
      method vzone :
        Cil_types.identified_term Cil_types.zone ->
        Cil_types.identified_term Cil_types.zone Cil.visitAction
    end
  class genericCilVisitor :
    ?prj:Project.t -> Cil.visitor_behavior -> cilVisitor
  class nopCilVisitor : cilVisitor
  val doVisit :
    '->
    '->
    ('-> 'b) -> ('-> 'Cil.visitAction) -> ('-> '-> 'b) -> '-> 'b
  val doVisitList :
    '->
    '->
    ('-> 'b) ->
    ('-> 'b list Cil.visitAction) -> ('-> '-> 'b) -> '-> 'b list
  val visitCilFileCopy : Cil.cilVisitor -> Cil_types.file -> Cil_types.file
  val visitCilFile : Cil.cilVisitor -> Cil_types.file -> unit
  val visitCilFileSameGlobals : Cil.cilVisitor -> Cil_types.file -> unit
  val visitCilGlobal :
    Cil.cilVisitor -> Cil_types.global -> Cil_types.global list
  val visitCilFunction :
    Cil.cilVisitor -> Cil_types.fundec -> Cil_types.fundec
  val visitCilExpr : Cil.cilVisitor -> Cil_types.exp -> Cil_types.exp
  val visitCilLval : Cil.cilVisitor -> Cil_types.lval -> Cil_types.lval
  val visitCilOffset : Cil.cilVisitor -> Cil_types.offset -> Cil_types.offset
  val visitCilInitOffset :
    Cil.cilVisitor -> Cil_types.offset -> Cil_types.offset
  val visitCilInstr :
    Cil.cilVisitor -> Cil_types.instr -> Cil_types.instr list
  val visitCilStmt : Cil.cilVisitor -> Cil_types.stmt -> Cil_types.stmt
  val visitCilBlock : Cil.cilVisitor -> Cil_types.block -> Cil_types.block
  val visitCilType : Cil.cilVisitor -> Cil_types.typ -> Cil_types.typ
  val visitCilVarDecl :
    Cil.cilVisitor -> Cil_types.varinfo -> Cil_types.varinfo
  val visitCilInit :
    Cil.cilVisitor ->
    Cil_types.varinfo -> Cil_types.offset -> Cil_types.init -> Cil_types.init
  val visitCilAttributes :
    Cil.cilVisitor -> Cil_types.attribute list -> Cil_types.attribute list
  val visitCilAnnotation :
    Cil.cilVisitor ->
    Cil_types.global_annotation -> Cil_types.global_annotation
  val visitCilCodeAnnotation :
    Cil.cilVisitor -> Cil_types.code_annotation -> Cil_types.code_annotation
  val visitCilAssigns :
    Cil.cilVisitor ->
    Cil_types.identified_term Cil_types.assigns ->
    Cil_types.identified_term Cil_types.assigns
  val visitCilFunspec :
    Cil.cilVisitor -> Cil_types.funspec -> Cil_types.funspec
  val visitCilBehavior :
    Cil.cilVisitor -> Cil_types.funbehavior -> Cil_types.funbehavior
  val visitCilBehaviors :
    Cil.cilVisitor ->
    Cil_types.funbehavior list -> Cil_types.funbehavior list
  val visitCilLogicType :
    Cil.cilVisitor -> Cil_types.logic_type -> Cil_types.logic_type
  val visitCilPredicate :
    Cil.cilVisitor -> Cil_types.predicate -> Cil_types.predicate
  val visitCilPredicateNamed :
    Cil.cilVisitor ->
    Cil_types.predicate Cil_types.named ->
    Cil_types.predicate Cil_types.named
  val visitCilIdPredicate :
    Cil.cilVisitor ->
    Cil_types.identified_predicate -> Cil_types.identified_predicate
  val visitCilPredicates :
    Cil.cilVisitor ->
    Cil_types.identified_predicate list ->
    Cil_types.identified_predicate list
  val visitCilTerm : Cil.cilVisitor -> Cil_types.term -> Cil_types.term
  val visitCilTermLhost :
    Cil.cilVisitor -> Cil_types.term_lhost -> Cil_types.term_lhost
  val visitCilTermOffset :
    Cil.cilVisitor -> Cil_types.term_offset -> Cil_types.term_offset
  val visitCilLogicInfo :
    Cil.cilVisitor -> Cil_types.logic_info -> Cil_types.logic_info
  val visitCilLogicVarUse :
    Cil.cilVisitor -> Cil_types.logic_var -> Cil_types.logic_var
  val visitCilLogicVarDecl :
    Cil.cilVisitor -> Cil_types.logic_var -> Cil_types.logic_var
  val is_skip : Cil_types.stmtkind -> bool
  val constFoldVisitor : bool -> Cil.cilVisitor
  val forgcc : string -> string
  module CurrentLoc :
    sig
      val self : Project.Computation.t
      val select :
        Kind.how ->
        Project.Computation.selection -> Project.Computation.selection
      val depend : Project.Computation.t -> unit
      val name : string
      val mark_as_computed : ?project:Project.project -> unit -> unit
      val is_computed : ?project:Project.project -> unit -> bool
      val do_not_save : unit -> unit
      module Datatype : Project.Datatype.S
      val howto_marshal : (Datatype.t -> 'a) -> ('-> Datatype.t) -> unit
      type data = Cil_types.location
      val set : data -> unit
      val get : unit -> data
      val clear : unit -> unit
    end
  val currentGlobal : Cil_types.global Pervasives.ref
  val d_loc : Format.formatter -> Cil_types.location -> unit
  val d_thisloc : Format.formatter -> unit
  val d_ikind : Format.formatter -> Cil_types.ikind -> unit
  val d_fkind : Format.formatter -> Cil_types.fkind -> unit
  val d_storage : Format.formatter -> Cil_types.storage -> unit
  val d_const : Format.formatter -> Cil_types.constant -> unit
  val empty_funspec : unit -> Cil_types.funspec
  val is_empty_funspec : Cil_types.funspec -> bool
  val derefStarLevel : int
  val indexLevel : int
  val arrowLevel : int
  val addrOfLevel : int
  val additiveLevel : int
  val comparativeLevel : int
  val bitwiseLevel : int
  val getParenthLevel : Cil_types.exp -> int
  val getParenthLevelLogic : Cil_types.term_node -> int
  class type cilPrinter =
    object
      val mutable logic_printer_enabled : bool
      val mutable verbose : bool
      method current_function : Cil_types.varinfo option
      method current_stmt : Cil_types.stmt option
      method getPrintInstrTerminator : unit -> string
      method has_annot : bool
      method may_be_skipped : Cil_types.stmt -> bool
      method pAnnotatedStmt :
        Cil_types.stmt -> Format.formatter -> Cil_types.stmt -> unit
      method pAnnotation :
        Format.formatter -> Cil_types.global_annotation -> unit
      method pAssigns :
        string ->
        Format.formatter ->
        Cil_types.identified_term Cil_types.assigns list -> unit
      method pAssumes :
        Format.formatter -> Cil_types.identified_predicate -> unit
      method pAttr : Format.formatter -> Cil_types.attribute -> bool
      method pAttrParam : Format.formatter -> Cil_types.attrparam -> unit
      method pAttrs : Format.formatter -> Cil_types.attributes -> unit
      method pBehavior : Format.formatter -> Cil_types.funbehavior -> unit
      method pBlock :
        ?toplevel:bool -> Format.formatter -> Cil_types.block -> unit
      method pCode_annot :
        Format.formatter -> Cil_types.code_annotation -> unit
      method pComplete_behaviors : Format.formatter -> string list -> unit
      method pDecreases :
        Format.formatter -> Cil_types.term Cil_types.variant -> unit
      method pDisjoint_behaviors : Format.formatter -> string list -> unit
      method pExp : Format.formatter -> Cil_types.exp -> unit
      method pFieldDecl : Format.formatter -> Cil_types.fieldinfo -> unit
      method pFrom :
        string ->
        Format.formatter ->
        Cil_types.identified_term Cil_types.assigns -> unit
      method pGlobal : Format.formatter -> Cil_types.global -> unit
      method pIdentified_predicate :
        Format.formatter -> Cil_types.identified_predicate -> unit
      method pInit : Format.formatter -> Cil_types.init -> unit
      method pInstr : Format.formatter -> Cil_types.instr -> unit
      method pLabel : Format.formatter -> Cil_types.label -> unit
      method pLineDirective :
        ?forcefile:bool -> Format.formatter -> Cil_types.location -> unit
      method pLogic_info_use :
        Format.formatter -> Cil_types.logic_info -> unit
      method pLogic_type :
        (Format.formatter -> unit) option ->
        Format.formatter -> Cil_types.logic_type -> unit
      method pLogic_type_def :
        Format.formatter -> Cil_types.logic_type_def -> unit
      method pLogic_var : Format.formatter -> Cil_types.logic_var -> unit
      method pLoop_variant :
        Format.formatter -> Cil_types.term Cil_types.variant -> unit
      method pLval : Format.formatter -> Cil_types.lval -> unit
      method pOffset : Format.formatter -> Cil_types.offset -> unit
      method pPost_cond :
        Format.formatter ->
        Cil_types.termination_kind * Cil_types.identified_predicate -> unit
      method pPredicate : Format.formatter -> Cil_types.predicate -> unit
      method pPredicate_named :
        Format.formatter -> Cil_types.predicate Cil_types.named -> unit
      method pQuantifiers : Format.formatter -> Cil_types.quantifiers -> unit
      method pRequires :
        Format.formatter -> Cil_types.identified_predicate -> unit
      method pSpec : Format.formatter -> Cil_types.funspec -> unit
      method pStatus : Format.formatter -> Cil_types.annot_status -> unit
      method pStmt : Format.formatter -> Cil_types.stmt -> unit
      method pStmtKind :
        Cil_types.stmt -> Format.formatter -> Cil_types.stmtkind -> unit
      method pStmtLabels : Format.formatter -> Cil_types.stmt -> unit
      method pStmtNext :
        Cil_types.stmt -> Format.formatter -> Cil_types.stmt -> unit
      method pTerm : Format.formatter -> Cil_types.term -> unit
      method pTerm_lval : Format.formatter -> Cil_types.term_lval -> unit
      method pTerm_node : Format.formatter -> Cil_types.term -> unit
      method pTerm_offset : Format.formatter -> Cil_types.term_offset -> unit
      method pTerminates :
        Format.formatter -> Cil_types.identified_predicate -> unit
      method pType :
        ?fundecl:Cil_types.varinfo ->
        (Format.formatter -> unit) option ->
        Format.formatter -> Cil_types.typ -> unit
      method pVDecl : Format.formatter -> Cil_types.varinfo -> unit
      method pVar : Format.formatter -> Cil_types.varinfo -> unit
      method pVarName : Format.formatter -> string -> unit
      method pZone :
        Format.formatter -> Cil_types.identified_term Cil_types.zone -> unit
      method requireBraces : Cil_types.block -> bool
      method setPrintInstrTerminator : string -> unit
    end
  class defaultCilPrinterClass : cilPrinter
  val defaultCilPrinter : Cil.cilPrinter
  class type descriptiveCilPrinter =
    object
      val mutable logic_printer_enabled : bool
      val mutable verbose : bool
      method current_function : Cil_types.varinfo option
      method current_stmt : Cil_types.stmt option
      method getPrintInstrTerminator : unit -> string
      method has_annot : bool
      method may_be_skipped : Cil_types.stmt -> bool
      method pAnnotatedStmt :
        Cil_types.stmt -> Format.formatter -> Cil_types.stmt -> unit
      method pAnnotation :
        Format.formatter -> Cil_types.global_annotation -> unit
      method pAssigns :
        string ->
        Format.formatter ->
        Cil_types.identified_term Cil_types.assigns list -> unit
      method pAssumes :
        Format.formatter -> Cil_types.identified_predicate -> unit
      method pAttr : Format.formatter -> Cil_types.attribute -> bool
      method pAttrParam : Format.formatter -> Cil_types.attrparam -> unit
      method pAttrs : Format.formatter -> Cil_types.attributes -> unit
      method pBehavior : Format.formatter -> Cil_types.funbehavior -> unit
      method pBlock :
        ?toplevel:bool -> Format.formatter -> Cil_types.block -> unit
      method pCode_annot :
        Format.formatter -> Cil_types.code_annotation -> unit
      method pComplete_behaviors : Format.formatter -> string list -> unit
      method pDecreases :
        Format.formatter -> Cil_types.term Cil_types.variant -> unit
      method pDisjoint_behaviors : Format.formatter -> string list -> unit
      method pExp : Format.formatter -> Cil_types.exp -> unit
      method pFieldDecl : Format.formatter -> Cil_types.fieldinfo -> unit
      method pFrom :
        string ->
        Format.formatter ->
        Cil_types.identified_term Cil_types.assigns -> unit
      method pGlobal : Format.formatter -> Cil_types.global -> unit
      method pIdentified_predicate :
        Format.formatter -> Cil_types.identified_predicate -> unit
      method pInit : Format.formatter -> Cil_types.init -> unit
      method pInstr : Format.formatter -> Cil_types.instr -> unit
      method pLabel : Format.formatter -> Cil_types.label -> unit
      method pLineDirective :
        ?forcefile:bool -> Format.formatter -> Cil_types.location -> unit
      method pLogic_info_use :
        Format.formatter -> Cil_types.logic_info -> unit
      method pLogic_type :
        (Format.formatter -> unit) option ->
        Format.formatter -> Cil_types.logic_type -> unit
      method pLogic_type_def :
        Format.formatter -> Cil_types.logic_type_def -> unit
      method pLogic_var : Format.formatter -> Cil_types.logic_var -> unit
      method pLoop_variant :
        Format.formatter -> Cil_types.term Cil_types.variant -> unit
      method pLval : Format.formatter -> Cil_types.lval -> unit
      method pOffset : Format.formatter -> Cil_types.offset -> unit
      method pPost_cond :
        Format.formatter ->
        Cil_types.termination_kind * Cil_types.identified_predicate -> unit
      method pPredicate : Format.formatter -> Cil_types.predicate -> unit
      method pPredicate_named :
        Format.formatter -> Cil_types.predicate Cil_types.named -> unit
      method pQuantifiers : Format.formatter -> Cil_types.quantifiers -> unit
      method pRequires :
        Format.formatter -> Cil_types.identified_predicate -> unit
      method pSpec : Format.formatter -> Cil_types.funspec -> unit
      method pStatus : Format.formatter -> Cil_types.annot_status -> unit
      method pStmt : Format.formatter -> Cil_types.stmt -> unit
      method pStmtKind :
        Cil_types.stmt -> Format.formatter -> Cil_types.stmtkind -> unit
      method pStmtLabels : Format.formatter -> Cil_types.stmt -> unit
      method pStmtNext :
        Cil_types.stmt -> Format.formatter -> Cil_types.stmt -> unit
      method pTemps : Format.formatter -> unit
      method pTerm : Format.formatter -> Cil_types.term -> unit
      method pTerm_lval : Format.formatter -> Cil_types.term_lval -> unit
      method pTerm_node : Format.formatter -> Cil_types.term -> unit
      method pTerm_offset : Format.formatter -> Cil_types.term_offset -> unit
      method pTerminates :
        Format.formatter -> Cil_types.identified_predicate -> unit
      method pType :
        ?fundecl:Cil_types.varinfo ->
        (Format.formatter -> unit) option ->
        Format.formatter -> Cil_types.typ -> unit
      method pVDecl : Format.formatter -> Cil_types.varinfo -> unit
      method pVar : Format.formatter -> Cil_types.varinfo -> unit
      method pVarName : Format.formatter -> string -> unit
      method pZone :
        Format.formatter -> Cil_types.identified_term Cil_types.zone -> unit
      method requireBraces : Cil_types.block -> bool
      method setPrintInstrTerminator : string -> unit
      method startTemps : unit -> unit
      method stopTemps : unit -> unit
    end
  class descriptiveCilPrinterClass : descriptiveCilPrinter
  val descriptiveCilPrinter : Cil.descriptiveCilPrinter
  val printType : Cil.cilPrinter -> Format.formatter -> Cil_types.typ -> unit
  val printExp : Cil.cilPrinter -> Format.formatter -> Cil_types.exp -> unit
  val printVar :
    #Cil.cilPrinter -> Format.formatter -> Cil_types.varinfo -> unit
  val printLval :
    Cil.cilPrinter -> Format.formatter -> Cil_types.lval -> unit
  val printGlobal :
    Cil.cilPrinter -> Format.formatter -> Cil_types.global -> unit
  val printAttr :
    Cil.cilPrinter -> Format.formatter -> Cil_types.attribute -> unit
  val printAttrs :
    Cil.cilPrinter -> Format.formatter -> Cil_types.attributes -> unit
  val printInstr :
    Cil.cilPrinter -> Format.formatter -> Cil_types.instr -> unit
  val printStmt :
    Cil.cilPrinter -> Format.formatter -> Cil_types.stmt -> unit
  val printBlock :
    Cil.cilPrinter -> Format.formatter -> Cil_types.block -> unit
  val printInit :
    Cil.cilPrinter -> Format.formatter -> Cil_types.init -> unit
  val printTerm_lval :
    Cil.cilPrinter -> Format.formatter -> Cil_types.term_lval -> unit
  val printLogic_var :
    Cil.cilPrinter -> Format.formatter -> Cil_types.logic_var -> unit
  val printLogic_type :
    Cil.cilPrinter -> Format.formatter -> Cil_types.logic_type -> unit
  val printTerm :
    Cil.cilPrinter -> Format.formatter -> Cil_types.term -> unit
  val printTerm_offset :
    Cil.cilPrinter -> Format.formatter -> Cil_types.term_offset -> unit
  val printPredicate_named :
    Cil.cilPrinter ->
    Format.formatter -> Cil_types.predicate Cil_types.named -> unit
  val printCode_annotation :
    Cil.cilPrinter -> Format.formatter -> Cil_types.code_annotation -> unit
  val printFunspec :
    Cil.cilPrinter -> Format.formatter -> Cil_types.funspec -> unit
  val printAnnotation :
    Cil.cilPrinter -> Format.formatter -> Cil_types.global_annotation -> unit
  val d_type : Format.formatter -> Cil_types.typ -> unit
  val d_exp : Format.formatter -> Cil_types.exp -> unit
  val d_var : Format.formatter -> Cil_types.varinfo -> unit
  val d_lval : Format.formatter -> Cil_types.lval -> unit
  val d_offset : Format.formatter -> Cil_types.offset -> unit
  val d_init : Format.formatter -> Cil_types.init -> unit
  val d_binop : Format.formatter -> Cil_types.binop -> unit
  val d_unop : Format.formatter -> Cil_types.unop -> unit
  val d_attr : Format.formatter -> Cil_types.attribute -> unit
  val d_attrparam : Format.formatter -> Cil_types.attrparam -> unit
  val d_attrlist : Format.formatter -> Cil_types.attributes -> unit
  val d_instr : Format.formatter -> Cil_types.instr -> unit
  val d_label : Format.formatter -> Cil_types.label -> unit
  val d_stmt : Format.formatter -> Cil_types.stmt -> unit
  val d_block : Format.formatter -> Cil_types.block -> unit
  val d_global : Format.formatter -> Cil_types.global -> unit
  val d_term_lval : Format.formatter -> Cil_types.term_lval -> unit
  val d_logic_var : Format.formatter -> Cil_types.logic_var -> unit
  val d_logic_type : Format.formatter -> Cil_types.logic_type -> unit
  val d_term : Format.formatter -> Cil_types.term -> unit
  val d_term_offset : Format.formatter -> Cil_types.term_offset -> unit
  val d_annotation_status :
    Format.formatter -> Cil_types.annotation_status -> unit
  val d_status : Format.formatter -> Cil_types.annot_status -> unit
  val d_predicate_named :
    Format.formatter -> Cil_types.predicate Cil_types.named -> unit
  val d_code_annotation :
    Format.formatter -> Cil_types.code_annotation -> unit
  val d_funspec : Format.formatter -> Cil_types.funspec -> unit
  val d_annotation : Format.formatter -> Cil_types.global_annotation -> unit
  val d_decreases :
    Format.formatter -> Cil_types.term Cil_types.variant -> unit
  val d_loop_variant :
    Format.formatter -> Cil_types.term Cil_types.variant -> unit
  val dn_exp : Format.formatter -> Cil_types.exp -> unit
  val dn_lval : Format.formatter -> Cil_types.lval -> unit
  val dn_init : Format.formatter -> Cil_types.init -> unit
  val dn_type : Format.formatter -> Cil_types.typ -> unit
  val dn_global : Format.formatter -> Cil_types.global -> unit
  val dn_attrlist : Format.formatter -> Cil_types.attributes -> unit
  val dn_attr : Format.formatter -> Cil_types.attribute -> unit
  val dn_attrparam : Format.formatter -> Cil_types.attrparam -> unit
  val dn_stmt : Format.formatter -> Cil_types.stmt -> unit
  val dn_instr : Format.formatter -> Cil_types.instr -> unit
  val dumpFile :
    Cil.cilPrinter ->
    Pervasives.out_channel -> string -> Cil_types.file -> unit
  val d_file : Cil.cilPrinter -> Format.formatter -> Cil_types.file -> unit
  val d_plainexp : Format.formatter -> Cil_types.exp -> unit
  val d_plaininit : Format.formatter -> Cil_types.init -> unit
  val d_plainlval : Format.formatter -> Cil_types.lval -> unit
  val d_plaintype : Format.formatter -> Cil_types.typ -> unit
  val dd_exp : Format.formatter -> Cil_types.exp -> unit
  val dd_lval : Format.formatter -> Cil_types.lval -> unit
  val uniqueVarNames : Cil_types.file -> unit
  val peepHole2 :
    agressive:bool ->
    (Cil_types.stmt * Cil_types.stmt -> Cil_types.stmt list option) ->
    Cil_types.stmt list -> Cil_types.stmt list
  val peepHole1 :
    (Cil_types.instr -> Cil_types.instr list option) ->
    Cil_types.stmt list -> unit
  exception SizeOfError of string * Cil_types.typ
  val empty_size_cache : unit -> Cil_types.bitsSizeofTypCache
  val bitsSizeOf : Cil_types.typ -> int
  val truncateInteger64 : Cil_types.ikind -> int64 -> int64 * bool
  val sizeOf : Cil_types.typ -> Cil_types.exp
  val sizeOf_int : Cil_types.typ -> int
  val alignOf_int : Cil_types.typ -> int
  val bitsOffset : Cil_types.typ -> Cil_types.offset -> int * int
  val dExp : string -> Cil_types.exp
  val dInstr : string -> Cil_types.location -> Cil_types.instr
  val dGlobal : string -> Cil_types.location -> Cil_types.global
  val mapNoCopy : ('-> 'a) -> 'a list -> 'a list
  val optMapNoCopy : ('-> 'a) -> 'a option -> 'a option
  val mapNoCopyList : ('-> 'a list) -> 'a list -> 'a list
  val startsWith : string -> string -> bool
  type formatArg =
      Fe of Cil_types.exp
    | Feo of Cil_types.exp option
    | Fu of Cil_types.unop
    | Fb of Cil_types.binop
    | Fk of Cil_types.ikind
    | FE of Cil_types.exp list
    | Ff of (string * Cil_types.typ * Cil_types.attributes)
    | FF of (string * Cil_types.typ * Cil_types.attributes) list
    | Fva of bool
    | Fv of Cil_types.varinfo
    | Fl of Cil_types.lval
    | Flo of Cil_types.lval option
    | Fo of Cil_types.offset
    | Fc of Cil_types.compinfo
    | Fi of Cil_types.instr
    | FI of Cil_types.instr list
    | Ft of Cil_types.typ
    | Fd of int
    | Fg of string
    | Fs of Cil_types.stmt
    | FS of Cil_types.stmt list
    | FA of Cil_types.attributes
    | Fp of Cil_types.attrparam
    | FP of Cil_types.attrparam list
    | FX of string
  val d_formatarg : Format.formatter -> Cil.formatArg -> unit
  val stmt_of_instr_list :
    ?loc:Cil_types.location -> Cil_types.instr list -> Cil_types.stmtkind
  val pretty_loc : Format.formatter -> Cil_types.kinstr -> unit
  val pretty_loc_simply : Format.formatter -> Cil_types.kinstr -> unit
  val cvar_to_lvar : Cil_types.varinfo -> Cil_types.logic_var
  val make_temp_logic_var : Cil_types.logic_type -> Cil_types.logic_var
  val lzero : ?loc:Cil_types.location -> unit -> Cil_types.term
  val lconstant : ?loc:Cil_types.location -> Int64.t -> Cil_types.term
  val close_predicate :
    Cil_types.predicate Cil_types.named ->
    Cil_types.predicate Cil_types.named
  val extract_varinfos_from_exp : Cil_types.exp -> Cilutil.VarinfoSet.t
  val extract_varinfos_from_lval : Cil_types.lval -> Cilutil.VarinfoSet.t
  val extract_free_logicvars_from_term :
    Cil_types.term -> Cilutil.LogicVarSet.t
  val extract_free_logicvars_from_predicate :
    Cil_types.predicate Cil_types.named -> Cilutil.LogicVarSet.t
  val create_alpha_renaming :
    Cil_types.varinfo list -> Cil_types.varinfo list -> Cil.cilVisitor
  val print_utf8 : bool Pervasives.ref
end