sig
val is_special_builtin : string -> bool
val add_special_builtin : string -> unit
val add_special_builtin_family : (string -> bool) -> unit
val init_builtins : unit -> unit
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 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 : State.t
val selfMachine_is_computed : ?project:Project.project -> unit -> bool
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 emptyFunctionFromVI : Cil_types.varinfo -> Cil_types.fundec
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 stripConstLocalType : Cil_types.typ -> Cil_types.typ
val selfFormalsDecl : State.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 -> ('a -> Cil_types.global -> 'a) -> '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 end
module Eid : sig val next : unit -> int end
val new_exp : loc:Cil_types.location -> Cil_types.exp_node -> Cil_types.exp
val copy_exp : Cil_types.exp -> Cil_types.exp
val dummy_exp : Cil_types.exp_node -> Cil_types.exp
val is_case_label : Cil_types.label -> bool
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 Builtin_functions :
sig
val self : State.t
val name : string
val kind : State.kind
val mark_as_computed : ?project:Project.t -> unit -> unit
val is_computed : ?project:Project.t -> unit -> bool
module Datatype : Datatype.S
val add_hook_on_update : (Datatype.t -> unit) -> unit
val howto_marshal : (Datatype.t -> 'a) -> ('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) -> 'a -> 'a
val memo : ?change:(data -> data) -> (key -> data) -> key -> data
val find : key -> data
val find_all : key -> data list
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 :
loc:Cil_types.location -> Cil_types.typ -> Cil_types.init
val foldLeftCompound :
implicit:bool ->
doinit:(Cil_types.offset -> Cil_types.init -> Cil_types.typ -> 'a -> 'a) ->
ct:Cil_types.typ ->
initl:(Cil_types.offset * Cil_types.init) list -> acc:'a -> '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 uint16_t : unit -> Cil_types.typ
val uint32_t : unit -> Cil_types.typ
val uint64_t : unit -> 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 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 arithmeticConversion : Cil_types.typ -> Cil_types.typ -> Cil_types.typ
val integralPromotion : Cil_types.typ -> Cil_types.typ
val isCharType : Cil_types.typ -> bool
val isShortType : 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 isVariadicListType : 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 -> My_bigint.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 ->
?scope:Cil_types.block ->
?generated:bool ->
?insert:bool -> string -> Cil_types.typ -> Cil_types.varinfo
val makePseudoVar : Cil_types.typ -> Cil_types.varinfo
val makeTempVar :
Cil_types.fundec ->
?insert:bool ->
?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 lastOffset : Cil_types.offset -> Cil_types.offset
val lastTermOffset : Cil_types.term_offset -> Cil_types.term_offset
val isBitfield : Cil_types.lval -> bool
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 hasSomeVolatileAttr : Cil_types.lval -> bool
val hasLvalTypeSomeVolatileAttr : Cil_types.typ -> bool
val zero : loc:Cil_datatype.Location.t -> Cil_types.exp
val one : loc:Cil_datatype.Location.t -> Cil_types.exp
val mone : loc:Cil_datatype.Location.t -> Cil_types.exp
val kinteger64_repr :
loc:Cil_types.location ->
Cil_types.ikind -> My_bigint.t -> string option -> Cil_types.exp
val kinteger64 :
loc:Cil_types.location -> Cil_types.ikind -> My_bigint.t -> Cil_types.exp
val kinteger :
loc:Cil_types.location -> Cil_types.ikind -> int -> Cil_types.exp
val integer : loc:Cil_types.location -> int -> Cil_types.exp
val isInteger : Cil_types.exp -> My_bigint.t 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 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 :
loc:Cil_types.location ->
bool ->
Cil_types.binop ->
Cil_types.exp -> Cil_types.exp -> Cil_types.typ -> Cil_types.exp
val compareConstant : Cil_types.constant -> Cil_types.constant -> bool
val compareExp : Cil_types.exp -> Cil_types.exp -> bool
val compareLval : Cil_types.lval -> Cil_types.lval -> bool
val compareOffset : Cil_types.offset -> Cil_types.offset -> bool
val increm : Cil_types.exp -> int -> Cil_types.exp
val increm64 : Cil_types.exp -> My_bigint.t -> Cil_types.exp
val var : Cil_types.varinfo -> Cil_types.lval
val evar : loc:Cil_types.location -> Cil_types.varinfo -> Cil_types.exp
val mkAddrOf : loc:Cil_types.location -> Cil_types.lval -> Cil_types.exp
val mkAddrOrStartOf :
loc:Cil_types.location -> Cil_types.lval -> Cil_types.exp
val mkMem : addr:Cil_types.exp -> off:Cil_types.offset -> Cil_types.lval
val mkBinOp :
loc:Cil_types.location ->
Cil_types.binop -> Cil_types.exp -> Cil_types.exp -> Cil_types.exp
val mkTermMem :
addr:Cil_types.term -> off:Cil_types.term_offset -> Cil_types.term_lval
val mkString : loc:Cil_types.location -> 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.location ->
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 : loc:Cil_types.location -> string -> Cil_types.exp
val appears_in_expr : Cil_types.varinfo -> Cil_types.exp -> bool
val mkStmt :
?ghost:bool -> ?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 :
?ghost:bool -> ?valid_sid:bool -> Cil_types.instr -> Cil_types.stmt
val mkEmptyStmt :
?ghost:bool -> ?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 * Cil_types.stmt Pervasives.ref list)
list -> Cil_types.block
type attributeClass = AttrName of bool | AttrFunType of bool | AttrType
val register_shallow_attribute : string -> unit
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 type_remove_qualifier_attributes : 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 -> 'a)
| ChangeTo of 'a
| ChangeToPost of 'a * ('a -> 'a)
| ChangeDoChildrenPost of 'a * ('a -> 'a)
val mk_behavior :
?name:string ->
?assumes:'a list ->
?requires:'a list ->
?post_cond:(Cil_types.termination_kind * 'a) list ->
?assigns:'b Cil_types.assigns ->
?extended:(string * int * 'a list) list ->
unit -> ('a, 'b) Cil_types.behavior
val default_behavior_name : string
val is_default_behavior : ('a, 'b) Cil_types.behavior -> bool
val find_default_behavior :
Cil_types.funspec -> Cil_types.funbehavior option
val find_default_requires : ('a, 'b) Cil_types.behavior list -> 'a list
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 reset_behavior_kernel_function : 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_kernel_function :
Cil.visitor_behavior ->
Cil_types.kernel_function -> Cil_types.kernel_function
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 get_original_kernel_function :
Cil.visitor_behavior ->
Cil_types.kernel_function -> Cil_types.kernel_function
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_kernel_function :
Cil.visitor_behavior ->
Cil_types.kernel_function -> Cil_types.kernel_function -> 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
val set_orig_kernel_function :
Cil.visitor_behavior ->
Cil_types.kernel_function -> Cil_types.kernel_function -> unit
val memo_kernel_function :
Cil.visitor_behavior ->
Cil_types.kernel_function -> Cil_types.kernel_function
class type cilVisitor =
object
method behavior : Cil.visitor_behavior
method current_func : Cil_types.fundec option
method current_kinstr : Cil_types.kinstr
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 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 vdeps :
Cil_types.identified_term Cil_types.deps ->
Cil_types.identified_term Cil_types.deps 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 vfrom :
Cil_types.identified_term Cil_types.from ->
Cil_types.identified_term Cil_types.from 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_label :
Cil_types.logic_label -> Cil_types.logic_label 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
end
class genericCilVisitor :
?prj:Project.t -> Cil.visitor_behavior -> cilVisitor
class nopCilVisitor : cilVisitor
val doVisit :
'a ->
'a ->
('b -> 'b) -> ('b -> 'b Cil.visitAction) -> ('a -> 'b -> 'b) -> 'b -> 'b
val doVisitList :
'a ->
'a ->
('b -> 'b) ->
('b -> 'b list Cil.visitAction) -> ('a -> 'b -> 'b) -> '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 visitCilEnumInfo :
Cil.cilVisitor -> Cil_types.enuminfo -> Cil_types.enuminfo
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 visitCilDeps :
Cil.cilVisitor ->
Cil_types.identified_term Cil_types.deps ->
Cil_types.identified_term Cil_types.deps
val visitCilFrom :
Cil.cilVisitor ->
Cil_types.identified_term Cil_types.from ->
Cil_types.identified_term Cil_types.from
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 visitCilExtended :
Cil.cilVisitor ->
string * int * Cil_types.identified_predicate list ->
string * int * Cil_types.identified_predicate 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 visitCilTermLval :
Cil.cilVisitor -> Cil_types.term_lval -> Cil_types.term_lval
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 : State.t
val name : string
val kind : State.kind
val mark_as_computed : ?project:Project.t -> unit -> unit
val is_computed : ?project:Project.t -> unit -> bool
module Datatype : Datatype.S
val add_hook_on_update : (Datatype.t -> unit) -> unit
val howto_marshal : (Datatype.t -> 'a) -> ('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 is_empty_behavior : Cil_types.funbehavior -> 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
val get_termination_kind_name : Cil_types.termination_kind -> string
class type cilPrinter =
object
val mutable logic_printer_enabled : bool
val mutable verbose : bool
method current_behavior : Cil_types.funbehavior option
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 -> 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 :
?nobrace:bool ->
?forcenewline: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.from -> 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 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 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_behavior : Cil_types.funbehavior option
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 -> 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 :
?nobrace:bool ->
?forcenewline: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.from -> 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 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 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 printAssigns :
Cil.cilPrinter ->
string ->
Format.formatter -> Cil_types.identified_term Cil_types.assigns -> unit
val printFrom :
Cil.cilPrinter ->
string ->
Format.formatter -> Cil_types.identified_term Cil_types.from -> 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_relation : Format.formatter -> Cil_types.relation -> 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_predicate_named :
Format.formatter -> Cil_types.predicate Cil_types.named -> unit
val d_identified_predicate :
Format.formatter -> Cil_types.identified_predicate -> 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 d_assigns :
Format.formatter -> Cil_types.identified_term Cil_types.assigns -> unit
val d_from :
Format.formatter -> Cil_types.identified_term Cil_types.from -> unit
val d_loop_assigns :
Format.formatter -> Cil_types.identified_term Cil_types.assigns -> unit
val d_loop_from :
Format.formatter -> Cil_types.identified_term Cil_types.from -> 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 unsignedVersionOf : Cil_types.ikind -> Cil_types.ikind
val intKindForSize : int -> bool -> Cil_types.ikind
val floatKindForSize : int -> Cil_types.fkind
val bitsSizeOf : Cil_types.typ -> int
val bytesSizeOfInt : Cil_types.ikind -> int
val isSigned : Cil_types.ikind -> bool
val rank : Cil_types.ikind -> int
val truncateInteger64 :
Cil_types.ikind -> My_bigint.t -> My_bigint.t * bool
val max_signed_number : int -> My_bigint.t
val min_signed_number : int -> My_bigint.t
val max_unsigned_number : int -> My_bigint.t
val fitsInInt : Cil_types.ikind -> My_bigint.t -> bool
val intKindForValue : My_bigint.t -> bool -> Cil_types.ikind
val sizeOf : loc:Cil_types.location -> 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) -> 'a list -> 'a list
val optMapNoCopy : ('a -> 'a) -> 'a option -> 'a option
val mapNoCopyList : ('a -> '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 -> My_bigint.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 -> Cil_datatype.Varinfo.Set.t
val extract_varinfos_from_lval :
Cil_types.lval -> Cil_datatype.Varinfo.Set.t
val extract_free_logicvars_from_term :
Cil_types.term -> Cil_datatype.Logic_var.Set.t
val extract_free_logicvars_from_predicate :
Cil_types.predicate Cil_types.named -> Cil_datatype.Logic_var.Set.t
val create_alpha_renaming :
Cil_types.varinfo list -> Cil_types.varinfo list -> Cil.cilVisitor
val separate_switch_succs :
Cil_types.stmt -> Cil_types.stmt list * Cil_types.stmt option
val register_ast_dependencies : State.t -> unit
end