sig
val initCIL : unit -> unit
val cilVersion : string
val cilVersionMajor : int
val cilVersionMinor : int
val cilVersionRevision : int
type file = {
mutable fileName : string;
mutable globals : Flx_cil_cil.global list;
mutable globinit : Flx_cil_cil.fundec option;
mutable globinitcalled : bool;
}
and global =
GType of Flx_cil_cil.typeinfo * Flx_cil_cil.location
| GCompTag of Flx_cil_cil.compinfo * Flx_cil_cil.location
| GCompTagDecl of Flx_cil_cil.compinfo * Flx_cil_cil.location
| GEnumTag of Flx_cil_cil.enuminfo * Flx_cil_cil.location
| GEnumTagDecl of Flx_cil_cil.enuminfo * Flx_cil_cil.location
| GVarDecl of Flx_cil_cil.varinfo * Flx_cil_cil.location
| GVar of Flx_cil_cil.varinfo * Flx_cil_cil.initinfo *
Flx_cil_cil.location
| GFun of Flx_cil_cil.fundec * Flx_cil_cil.location
| GAsm of string * Flx_cil_cil.location
| GPragma of Flx_cil_cil.attribute * Flx_cil_cil.location
| GText of string
and typ =
TVoid of Flx_cil_cil.attributes
| TInt of Flx_cil_cil.ikind * Flx_cil_cil.attributes
| TFloat of Flx_cil_cil.fkind * Flx_cil_cil.attributes
| TPtr of Flx_cil_cil.typ * Flx_cil_cil.attributes
| TArray of Flx_cil_cil.typ * Flx_cil_cil.exp option *
Flx_cil_cil.attributes
| TFun of Flx_cil_cil.typ *
(string * Flx_cil_cil.typ * Flx_cil_cil.attributes) list option *
bool * Flx_cil_cil.attributes
| TNamed of Flx_cil_cil.typeinfo * Flx_cil_cil.attributes
| TComp of Flx_cil_cil.compinfo * Flx_cil_cil.attributes
| TEnum of Flx_cil_cil.enuminfo * Flx_cil_cil.attributes
| TBuiltin_va_list of Flx_cil_cil.attributes
and ikind =
IBool
| IChar
| ISChar
| IUChar
| IInt
| IUInt
| IShort
| IUShort
| ILong
| IULong
| ILongLong
| IULongLong
and fkind =
FFloat
| FDouble
| FLongDouble
| CFloat
| CDouble
| CLongDouble
| IFloat
| IDouble
| ILongDouble
and attribute = Attr of string * Flx_cil_cil.attrparam list
and attributes = Flx_cil_cil.attribute list
and attrparam =
AInt of int
| AStr of string
| ACons of string * Flx_cil_cil.attrparam list
| ASizeOf of Flx_cil_cil.typ
| ASizeOfE of Flx_cil_cil.attrparam
| AAlignOf of Flx_cil_cil.typ
| AAlignOfE of Flx_cil_cil.attrparam
| AUnOp of Flx_cil_cil.unop * Flx_cil_cil.attrparam
| ABinOp of Flx_cil_cil.binop * Flx_cil_cil.attrparam *
Flx_cil_cil.attrparam
| ADot of Flx_cil_cil.attrparam * string
and compinfo = {
mutable cstruct : bool;
mutable cname : string;
mutable ckey : int;
mutable cfields : Flx_cil_cil.fieldinfo list;
mutable cattr : Flx_cil_cil.attributes;
mutable cdefined : bool;
mutable creferenced : bool;
}
and fieldinfo = {
mutable fcomp : Flx_cil_cil.compinfo;
mutable fname : string;
mutable ftype : Flx_cil_cil.typ;
mutable fbitfield : int option;
mutable fattr : Flx_cil_cil.attributes;
mutable floc : Flx_cil_cil.location;
mutable fstorage : Flx_cil_cil.storage;
}
and enuminfo = {
mutable ename : string;
mutable eitems : (string * Flx_cil_cil.exp * Flx_cil_cil.location) list;
mutable eattr : Flx_cil_cil.attributes;
mutable ereferenced : bool;
}
and typeinfo = {
mutable tname : string;
mutable ttype : Flx_cil_cil.typ;
mutable treferenced : bool;
}
and varinfo = {
mutable vname : string;
mutable vtype : Flx_cil_cil.typ;
mutable vattr : Flx_cil_cil.attributes;
mutable vstorage : Flx_cil_cil.storage;
mutable vglob : bool;
mutable vinline : bool;
mutable vdecl : Flx_cil_cil.location;
mutable vid : int;
mutable vaddrof : bool;
mutable vreferenced : bool;
}
and storage = NoStorage | Static | Register | Extern
and exp =
Const of Flx_cil_cil.constant
| Lval of Flx_cil_cil.lval
| SizeOf of Flx_cil_cil.typ
| SizeOfE of Flx_cil_cil.exp
| SizeOfStr of string
| AlignOf of Flx_cil_cil.typ
| AlignOfE of Flx_cil_cil.exp
| UnOp of Flx_cil_cil.unop * Flx_cil_cil.exp * Flx_cil_cil.typ
| BinOp of Flx_cil_cil.binop * Flx_cil_cil.exp * Flx_cil_cil.exp *
Flx_cil_cil.typ
| CastE of Flx_cil_cil.typ * Flx_cil_cil.exp
| AddrOf of Flx_cil_cil.lval
| StartOf of Flx_cil_cil.lval
and constant =
CInt64 of int64 * Flx_cil_cil.ikind * string option
| CStr of string
| CWStr of int64 list
| CChr of char
| CReal of float * Flx_cil_cil.fkind * string option
and unop = Neg | BNot | LNot
and binop =
PlusA
| PlusPI
| IndexPI
| MinusA
| MinusPI
| MinusPP
| Mult
| Div
| Mod
| Shiftlt
| Shiftrt
| Lt
| Gt
| Le
| Ge
| Eq
| Ne
| BAnd
| BXor
| BOr
| LAnd
| LOr
and lval = Flx_cil_cil.lhost * Flx_cil_cil.offset
and lhost = Var of Flx_cil_cil.varinfo | Mem of Flx_cil_cil.exp
and offset =
NoOffset
| Field of Flx_cil_cil.fieldinfo * Flx_cil_cil.offset
| Index of Flx_cil_cil.exp * Flx_cil_cil.offset
and init =
SingleInit of Flx_cil_cil.exp
| CompoundInit of Flx_cil_cil.typ *
(Flx_cil_cil.offset * Flx_cil_cil.init) list
and initinfo = { mutable init : Flx_cil_cil.init option; }
and fundec = {
mutable svar : Flx_cil_cil.varinfo;
mutable sformals : Flx_cil_cil.varinfo list;
mutable slocals : Flx_cil_cil.varinfo list;
mutable smaxid : int;
mutable sbody : Flx_cil_cil.block;
mutable smaxstmtid : int option;
}
and block = {
mutable battrs : Flx_cil_cil.attributes;
mutable bstmts : Flx_cil_cil.stmt list;
}
and stmt = {
mutable labels : Flx_cil_cil.label list;
mutable skind : Flx_cil_cil.stmtkind;
mutable sid : int;
mutable succs : Flx_cil_cil.stmt list;
mutable preds : Flx_cil_cil.stmt list;
}
and label =
Label of string * Flx_cil_cil.location * bool
| Case of Flx_cil_cil.exp * Flx_cil_cil.location
| Default of Flx_cil_cil.location
and stmtkind =
Instr of Flx_cil_cil.instr list
| Return of Flx_cil_cil.exp option * Flx_cil_cil.location
| Goto of Flx_cil_cil.stmt Pervasives.ref * Flx_cil_cil.location
| Break of Flx_cil_cil.location
| Continue of Flx_cil_cil.location
| If of Flx_cil_cil.exp * Flx_cil_cil.block * Flx_cil_cil.block *
Flx_cil_cil.location
| Switch of Flx_cil_cil.exp * Flx_cil_cil.block * Flx_cil_cil.stmt list *
Flx_cil_cil.location
| Loop of Flx_cil_cil.block * Flx_cil_cil.location *
Flx_cil_cil.stmt option * Flx_cil_cil.stmt option
| Block of Flx_cil_cil.block
| TryFinally of Flx_cil_cil.block * Flx_cil_cil.block *
Flx_cil_cil.location
| TryExcept of Flx_cil_cil.block *
(Flx_cil_cil.instr list * Flx_cil_cil.exp) * Flx_cil_cil.block *
Flx_cil_cil.location
and instr =
Set of Flx_cil_cil.lval * Flx_cil_cil.exp * Flx_cil_cil.location
| Call of Flx_cil_cil.lval option * Flx_cil_cil.exp *
Flx_cil_cil.exp list * Flx_cil_cil.location
| Asm of Flx_cil_cil.attributes * string list *
(string * Flx_cil_cil.lval) list * (string * Flx_cil_cil.exp) list *
string list * Flx_cil_cil.location
and location = { line : int; file : string; byte : int; }
type featureDescr = {
fd_enabled : bool Pervasives.ref;
fd_name : string;
fd_description : string;
fd_extraopt : (string * Arg.spec * string) list;
fd_doit : Flx_cil_cil.file -> unit;
fd_post_check : bool;
}
val compareLoc : Flx_cil_cil.location -> Flx_cil_cil.location -> int
val emptyFunction : string -> Flx_cil_cil.fundec
val setFormals : Flx_cil_cil.fundec -> Flx_cil_cil.varinfo list -> unit
val setFunctionType : Flx_cil_cil.fundec -> Flx_cil_cil.typ -> unit
val setMaxId : Flx_cil_cil.fundec -> unit
val dummyFunDec : Flx_cil_cil.fundec
val dummyFile : Flx_cil_cil.file
val saveBinaryFile : Flx_cil_cil.file -> string -> unit
val saveBinaryFileChannel :
Flx_cil_cil.file -> Pervasives.out_channel -> unit
val loadBinaryFile : string -> Flx_cil_cil.file
val getGlobInit :
?main_name:string -> Flx_cil_cil.file -> Flx_cil_cil.fundec
val iterGlobals : Flx_cil_cil.file -> (Flx_cil_cil.global -> unit) -> unit
val foldGlobals :
Flx_cil_cil.file -> ('a -> Flx_cil_cil.global -> 'a) -> 'a -> 'a
val mapGlobals :
Flx_cil_cil.file -> (Flx_cil_cil.global -> Flx_cil_cil.global) -> unit
val prepareCFG : Flx_cil_cil.fundec -> unit
val computeCFGInfo : Flx_cil_cil.fundec -> bool -> Flx_cil_cil.stmt list
val copyFunction : Flx_cil_cil.fundec -> string -> Flx_cil_cil.fundec
val pushGlobal :
Flx_cil_cil.global ->
types:Flx_cil_cil.global list Pervasives.ref ->
variables:Flx_cil_cil.global list Pervasives.ref -> unit
val gccBuiltins :
(string, Flx_cil_cil.typ * Flx_cil_cil.typ list * bool) Hashtbl.t
val msvcBuiltins :
(string, Flx_cil_cil.typ * Flx_cil_cil.typ list * bool) Hashtbl.t
val makeZeroInit : Flx_cil_cil.typ -> Flx_cil_cil.init
val foldLeftCompound :
doinit:(Flx_cil_cil.offset ->
Flx_cil_cil.init -> Flx_cil_cil.typ -> 'a -> 'a) ->
ct:Flx_cil_cil.typ ->
initl:(Flx_cil_cil.offset * Flx_cil_cil.init) list -> acc:'a -> 'a
val foldLeftCompoundAll :
doinit:(Flx_cil_cil.offset ->
Flx_cil_cil.init -> Flx_cil_cil.typ -> 'a -> 'a) ->
ct:Flx_cil_cil.typ ->
initl:(Flx_cil_cil.offset * Flx_cil_cil.init) list -> acc:'a -> 'a
val voidType : Flx_cil_cil.typ
val isVoidType : Flx_cil_cil.typ -> bool
val isVoidPtrType : Flx_cil_cil.typ -> bool
val intType : Flx_cil_cil.typ
val uintType : Flx_cil_cil.typ
val longType : Flx_cil_cil.typ
val ulongType : Flx_cil_cil.typ
val charType : Flx_cil_cil.typ
val charPtrType : Flx_cil_cil.typ
val wcharKind : Flx_cil_cil.ikind Pervasives.ref
val wcharType : Flx_cil_cil.typ Pervasives.ref
val charConstPtrType : Flx_cil_cil.typ
val voidPtrType : Flx_cil_cil.typ
val intPtrType : Flx_cil_cil.typ
val uintPtrType : Flx_cil_cil.typ
val doubleType : Flx_cil_cil.typ
val upointType : Flx_cil_cil.typ Pervasives.ref
val typeOfSizeOf : Flx_cil_cil.typ Pervasives.ref
val isSigned : Flx_cil_cil.ikind -> bool
val mkCompInfo :
bool ->
string ->
(Flx_cil_cil.compinfo ->
(string * Flx_cil_cil.typ * int option * Flx_cil_cil.attributes *
Flx_cil_cil.location * Flx_cil_cil.storage)
list) ->
Flx_cil_cil.attributes -> Flx_cil_cil.compinfo
val copyCompInfo : Flx_cil_cil.compinfo -> string -> Flx_cil_cil.compinfo
val missingFieldName : string
val compFullName : Flx_cil_cil.compinfo -> string
val isCompleteType : Flx_cil_cil.typ -> bool
val unrollType : Flx_cil_cil.typ -> Flx_cil_cil.typ
val unrollTypeDeep : Flx_cil_cil.typ -> Flx_cil_cil.typ
val isIntegralType : Flx_cil_cil.typ -> bool
val isArithmeticType : Flx_cil_cil.typ -> bool
val isPointerType : Flx_cil_cil.typ -> bool
val isFunctionType : Flx_cil_cil.typ -> bool
val argsToList :
(string * Flx_cil_cil.typ * Flx_cil_cil.attributes) list option ->
(string * Flx_cil_cil.typ * Flx_cil_cil.attributes) list
val isArrayType : Flx_cil_cil.typ -> bool
exception LenOfArray
val lenOfArray : Flx_cil_cil.exp option -> int
val getCompField : Flx_cil_cil.compinfo -> string -> Flx_cil_cil.fieldinfo
type existsAction = ExistsTrue | ExistsFalse | ExistsMaybe
val existsType :
(Flx_cil_cil.typ -> Flx_cil_cil.existsAction) -> Flx_cil_cil.typ -> bool
val splitFunctionType :
Flx_cil_cil.typ ->
Flx_cil_cil.typ *
(string * Flx_cil_cil.typ * Flx_cil_cil.attributes) list option *
bool * Flx_cil_cil.attributes
val splitFunctionTypeVI :
Flx_cil_cil.varinfo ->
Flx_cil_cil.typ *
(string * Flx_cil_cil.typ * Flx_cil_cil.attributes) list option *
bool * Flx_cil_cil.attributes
type typsig =
TSArray of Flx_cil_cil.typsig * Flx_cil_cil.exp option *
Flx_cil_cil.attributes
| TSPtr of Flx_cil_cil.typsig * Flx_cil_cil.attributes
| TSComp of bool * string * Flx_cil_cil.attributes
| TSFun of Flx_cil_cil.typsig * Flx_cil_cil.typsig list * bool *
Flx_cil_cil.attributes
| TSEnum of string * Flx_cil_cil.attributes
| TSBase of Flx_cil_cil.typ
val d_typsig : unit -> Flx_cil_cil.typsig -> Flx_cil_pretty.doc
val typeSig : Flx_cil_cil.typ -> Flx_cil_cil.typsig
val typeSigWithAttrs :
(Flx_cil_cil.attributes -> Flx_cil_cil.attributes) ->
Flx_cil_cil.typ -> Flx_cil_cil.typsig
val setTypeSigAttrs :
Flx_cil_cil.attributes -> Flx_cil_cil.typsig -> Flx_cil_cil.typsig
val typeSigAttrs : Flx_cil_cil.typsig -> Flx_cil_cil.attributes
val makeVarinfo : bool -> string -> Flx_cil_cil.typ -> Flx_cil_cil.varinfo
val makeFormalVar :
Flx_cil_cil.fundec ->
?where:string -> string -> Flx_cil_cil.typ -> Flx_cil_cil.varinfo
val makeLocalVar :
Flx_cil_cil.fundec ->
?insert:bool -> string -> Flx_cil_cil.typ -> Flx_cil_cil.varinfo
val makeTempVar :
Flx_cil_cil.fundec ->
?name:string -> Flx_cil_cil.typ -> Flx_cil_cil.varinfo
val makeGlobalVar : string -> Flx_cil_cil.typ -> Flx_cil_cil.varinfo
val copyVarinfo : Flx_cil_cil.varinfo -> string -> Flx_cil_cil.varinfo
val addOffsetLval :
Flx_cil_cil.offset -> Flx_cil_cil.lval -> Flx_cil_cil.lval
val addOffset :
Flx_cil_cil.offset -> Flx_cil_cil.offset -> Flx_cil_cil.offset
val removeOffsetLval :
Flx_cil_cil.lval -> Flx_cil_cil.lval * Flx_cil_cil.offset
val removeOffset :
Flx_cil_cil.offset -> Flx_cil_cil.offset * Flx_cil_cil.offset
val typeOfLval : Flx_cil_cil.lval -> Flx_cil_cil.typ
val typeOffset : Flx_cil_cil.typ -> Flx_cil_cil.offset -> Flx_cil_cil.typ
val zero : Flx_cil_cil.exp
val one : Flx_cil_cil.exp
val mone : Flx_cil_cil.exp
val kinteger64 : Flx_cil_cil.ikind -> int64 -> Flx_cil_cil.exp
val kinteger : Flx_cil_cil.ikind -> int -> Flx_cil_cil.exp
val integer : int -> Flx_cil_cil.exp
val isInteger : Flx_cil_cil.exp -> int64 option
val isConstant : Flx_cil_cil.exp -> bool
val isZero : Flx_cil_cil.exp -> bool
val constFold : bool -> Flx_cil_cil.exp -> Flx_cil_cil.exp
val constFoldBinOp :
bool ->
Flx_cil_cil.binop ->
Flx_cil_cil.exp -> Flx_cil_cil.exp -> Flx_cil_cil.typ -> Flx_cil_cil.exp
val increm : Flx_cil_cil.exp -> int -> Flx_cil_cil.exp
val var : Flx_cil_cil.varinfo -> Flx_cil_cil.lval
val mkAddrOf : Flx_cil_cil.lval -> Flx_cil_cil.exp
val mkAddrOrStartOf : Flx_cil_cil.lval -> Flx_cil_cil.exp
val mkMem :
addr:Flx_cil_cil.exp -> off:Flx_cil_cil.offset -> Flx_cil_cil.lval
val mkString : string -> Flx_cil_cil.exp
val mkCastT :
e:Flx_cil_cil.exp ->
oldt:Flx_cil_cil.typ -> newt:Flx_cil_cil.typ -> Flx_cil_cil.exp
val mkCast : e:Flx_cil_cil.exp -> newt:Flx_cil_cil.typ -> Flx_cil_cil.exp
val typeOf : Flx_cil_cil.exp -> Flx_cil_cil.typ
val parseInt : string -> Flx_cil_cil.exp
val mkStmt : Flx_cil_cil.stmtkind -> Flx_cil_cil.stmt
val mkBlock : Flx_cil_cil.stmt list -> Flx_cil_cil.block
val mkStmtOneInstr : Flx_cil_cil.instr -> Flx_cil_cil.stmt
val compactStmts : Flx_cil_cil.stmt list -> Flx_cil_cil.stmt list
val mkEmptyStmt : unit -> Flx_cil_cil.stmt
val dummyInstr : Flx_cil_cil.instr
val dummyStmt : Flx_cil_cil.stmt
val mkWhile :
guard:Flx_cil_cil.exp ->
body:Flx_cil_cil.stmt list -> Flx_cil_cil.stmt list
val mkForIncr :
iter:Flx_cil_cil.varinfo ->
first:Flx_cil_cil.exp ->
stopat:Flx_cil_cil.exp ->
incr:Flx_cil_cil.exp ->
body:Flx_cil_cil.stmt list -> Flx_cil_cil.stmt list
val mkFor :
start:Flx_cil_cil.stmt list ->
guard:Flx_cil_cil.exp ->
next:Flx_cil_cil.stmt list ->
body:Flx_cil_cil.stmt list -> Flx_cil_cil.stmt list
type attributeClass = AttrName of bool | AttrFunType of bool | AttrType
val attributeHash : (string, Flx_cil_cil.attributeClass) Hashtbl.t
val partitionAttributes :
default:Flx_cil_cil.attributeClass ->
Flx_cil_cil.attributes ->
Flx_cil_cil.attribute list * Flx_cil_cil.attribute list *
Flx_cil_cil.attribute list
val addAttribute :
Flx_cil_cil.attribute -> Flx_cil_cil.attributes -> Flx_cil_cil.attributes
val addAttributes :
Flx_cil_cil.attribute list ->
Flx_cil_cil.attributes -> Flx_cil_cil.attributes
val dropAttribute :
string -> Flx_cil_cil.attributes -> Flx_cil_cil.attributes
val filterAttributes :
string -> Flx_cil_cil.attributes -> Flx_cil_cil.attributes
val hasAttribute : string -> Flx_cil_cil.attributes -> bool
val typeAttrs : Flx_cil_cil.typ -> Flx_cil_cil.attribute list
val setTypeAttrs :
Flx_cil_cil.typ -> Flx_cil_cil.attributes -> Flx_cil_cil.typ
val typeAddAttributes :
Flx_cil_cil.attribute list -> Flx_cil_cil.typ -> Flx_cil_cil.typ
val typeRemoveAttributes :
string list -> Flx_cil_cil.typ -> Flx_cil_cil.typ
type 'a visitAction =
SkipChildren
| DoChildren
| ChangeTo of 'a
| ChangeDoChildrenPost of 'a * ('a -> 'a)
class type cilVisitor =
object
method queueInstr : Flx_cil_cil.instr list -> unit
method unqueueInstr : unit -> Flx_cil_cil.instr list
method vattr :
Flx_cil_cil.attribute ->
Flx_cil_cil.attribute list Flx_cil_cil.visitAction
method vblock :
Flx_cil_cil.block -> Flx_cil_cil.block Flx_cil_cil.visitAction
method vexpr :
Flx_cil_cil.exp -> Flx_cil_cil.exp Flx_cil_cil.visitAction
method vfunc :
Flx_cil_cil.fundec -> Flx_cil_cil.fundec Flx_cil_cil.visitAction
method vglob :
Flx_cil_cil.global -> Flx_cil_cil.global list Flx_cil_cil.visitAction
method vinit :
Flx_cil_cil.init -> Flx_cil_cil.init Flx_cil_cil.visitAction
method vinitoffs :
Flx_cil_cil.offset -> Flx_cil_cil.offset Flx_cil_cil.visitAction
method vinst :
Flx_cil_cil.instr -> Flx_cil_cil.instr list Flx_cil_cil.visitAction
method vlval :
Flx_cil_cil.lval -> Flx_cil_cil.lval Flx_cil_cil.visitAction
method voffs :
Flx_cil_cil.offset -> Flx_cil_cil.offset Flx_cil_cil.visitAction
method vstmt :
Flx_cil_cil.stmt -> Flx_cil_cil.stmt Flx_cil_cil.visitAction
method vtype :
Flx_cil_cil.typ -> Flx_cil_cil.typ Flx_cil_cil.visitAction
method vvdec :
Flx_cil_cil.varinfo -> Flx_cil_cil.varinfo Flx_cil_cil.visitAction
method vvrbl :
Flx_cil_cil.varinfo -> Flx_cil_cil.varinfo Flx_cil_cil.visitAction
end
class nopCilVisitor : cilVisitor
val visitCilFile : Flx_cil_cil.cilVisitor -> Flx_cil_cil.file -> unit
val visitCilFileSameGlobals :
Flx_cil_cil.cilVisitor -> Flx_cil_cil.file -> unit
val visitCilGlobal :
Flx_cil_cil.cilVisitor -> Flx_cil_cil.global -> Flx_cil_cil.global list
val visitCilFunction :
Flx_cil_cil.cilVisitor -> Flx_cil_cil.fundec -> Flx_cil_cil.fundec
val visitCilExpr :
Flx_cil_cil.cilVisitor -> Flx_cil_cil.exp -> Flx_cil_cil.exp
val visitCilLval :
Flx_cil_cil.cilVisitor -> Flx_cil_cil.lval -> Flx_cil_cil.lval
val visitCilOffset :
Flx_cil_cil.cilVisitor -> Flx_cil_cil.offset -> Flx_cil_cil.offset
val visitCilInitOffset :
Flx_cil_cil.cilVisitor -> Flx_cil_cil.offset -> Flx_cil_cil.offset
val visitCilInstr :
Flx_cil_cil.cilVisitor -> Flx_cil_cil.instr -> Flx_cil_cil.instr list
val visitCilStmt :
Flx_cil_cil.cilVisitor -> Flx_cil_cil.stmt -> Flx_cil_cil.stmt
val visitCilBlock :
Flx_cil_cil.cilVisitor -> Flx_cil_cil.block -> Flx_cil_cil.block
val visitCilType :
Flx_cil_cil.cilVisitor -> Flx_cil_cil.typ -> Flx_cil_cil.typ
val visitCilVarDecl :
Flx_cil_cil.cilVisitor -> Flx_cil_cil.varinfo -> Flx_cil_cil.varinfo
val visitCilInit :
Flx_cil_cil.cilVisitor -> Flx_cil_cil.init -> Flx_cil_cil.init
val visitCilAttributes :
Flx_cil_cil.cilVisitor ->
Flx_cil_cil.attribute list -> Flx_cil_cil.attribute list
val msvcMode : bool Pervasives.ref
val useLogicalOperators : bool Pervasives.ref
type lineDirectiveStyle =
LineComment
| LinePreprocessorInput
| LinePreprocessorOutput
val lineDirectiveStyle :
Flx_cil_cil.lineDirectiveStyle option Pervasives.ref
val print_CIL_Input : bool Pervasives.ref
val printCilAsIs : bool Pervasives.ref
val currentLoc : Flx_cil_cil.location Pervasives.ref
val d_loc : unit -> Flx_cil_cil.location -> Flx_cil_pretty.doc
val d_thisloc : unit -> Flx_cil_pretty.doc
val d_ikind : unit -> Flx_cil_cil.ikind -> Flx_cil_pretty.doc
val d_fkind : unit -> Flx_cil_cil.fkind -> Flx_cil_pretty.doc
val d_storage : unit -> Flx_cil_cil.storage -> Flx_cil_pretty.doc
val d_const : unit -> Flx_cil_cil.constant -> Flx_cil_pretty.doc
class type cilPrinter =
object
method dBlock :
Pervasives.out_channel -> int -> Flx_cil_cil.block -> unit
method dGlobal : Pervasives.out_channel -> Flx_cil_cil.global -> unit
method dInit :
Pervasives.out_channel -> int -> Flx_cil_cil.init -> unit
method dStmt :
Pervasives.out_channel -> int -> Flx_cil_cil.stmt -> unit
method pAttr : Flx_cil_cil.attribute -> Flx_cil_pretty.doc * bool
method pAttrParam : unit -> Flx_cil_cil.attrparam -> Flx_cil_pretty.doc
method pAttrs : unit -> Flx_cil_cil.attributes -> Flx_cil_pretty.doc
method pBlock : unit -> Flx_cil_cil.block -> Flx_cil_pretty.doc
method pExp : unit -> Flx_cil_cil.exp -> Flx_cil_pretty.doc
method pFieldDecl : unit -> Flx_cil_cil.fieldinfo -> Flx_cil_pretty.doc
method pGlobal : unit -> Flx_cil_cil.global -> Flx_cil_pretty.doc
method pInit : unit -> Flx_cil_cil.init -> Flx_cil_pretty.doc
method pInstr : unit -> Flx_cil_cil.instr -> Flx_cil_pretty.doc
method pLabel : unit -> Flx_cil_cil.label -> Flx_cil_pretty.doc
method pLineDirective :
?forcefile:bool -> Flx_cil_cil.location -> Flx_cil_pretty.doc
method pLval : unit -> Flx_cil_cil.lval -> Flx_cil_pretty.doc
method pOffset :
Flx_cil_pretty.doc -> Flx_cil_cil.offset -> Flx_cil_pretty.doc
method pStmt : unit -> Flx_cil_cil.stmt -> Flx_cil_pretty.doc
method pStmtKind :
Flx_cil_cil.stmt ->
unit -> Flx_cil_cil.stmtkind -> Flx_cil_pretty.doc
method pType :
Flx_cil_pretty.doc option ->
unit -> Flx_cil_cil.typ -> Flx_cil_pretty.doc
method pVDecl : unit -> Flx_cil_cil.varinfo -> Flx_cil_pretty.doc
method pVar : Flx_cil_cil.varinfo -> Flx_cil_pretty.doc
end
class defaultCilPrinterClass : cilPrinter
val defaultCilPrinter : Flx_cil_cil.cilPrinter
val printType :
Flx_cil_cil.cilPrinter -> unit -> Flx_cil_cil.typ -> Flx_cil_pretty.doc
val printExp :
Flx_cil_cil.cilPrinter -> unit -> Flx_cil_cil.exp -> Flx_cil_pretty.doc
val printLval :
Flx_cil_cil.cilPrinter -> unit -> Flx_cil_cil.lval -> Flx_cil_pretty.doc
val printGlobal :
Flx_cil_cil.cilPrinter ->
unit -> Flx_cil_cil.global -> Flx_cil_pretty.doc
val printAttr :
Flx_cil_cil.cilPrinter ->
unit -> Flx_cil_cil.attribute -> Flx_cil_pretty.doc
val printAttrs :
Flx_cil_cil.cilPrinter ->
unit -> Flx_cil_cil.attributes -> Flx_cil_pretty.doc
val printInstr :
Flx_cil_cil.cilPrinter -> unit -> Flx_cil_cil.instr -> Flx_cil_pretty.doc
val printStmt :
Flx_cil_cil.cilPrinter -> unit -> Flx_cil_cil.stmt -> Flx_cil_pretty.doc
val printBlock :
Flx_cil_cil.cilPrinter -> unit -> Flx_cil_cil.block -> Flx_cil_pretty.doc
val dumpStmt :
Flx_cil_cil.cilPrinter ->
Pervasives.out_channel -> int -> Flx_cil_cil.stmt -> unit
val dumpBlock :
Flx_cil_cil.cilPrinter ->
Pervasives.out_channel -> int -> Flx_cil_cil.block -> unit
val printInit :
Flx_cil_cil.cilPrinter -> unit -> Flx_cil_cil.init -> Flx_cil_pretty.doc
val dumpInit :
Flx_cil_cil.cilPrinter ->
Pervasives.out_channel -> int -> Flx_cil_cil.init -> unit
val d_type : unit -> Flx_cil_cil.typ -> Flx_cil_pretty.doc
val d_exp : unit -> Flx_cil_cil.exp -> Flx_cil_pretty.doc
val d_lval : unit -> Flx_cil_cil.lval -> Flx_cil_pretty.doc
val d_offset :
Flx_cil_pretty.doc -> unit -> Flx_cil_cil.offset -> Flx_cil_pretty.doc
val d_init : unit -> Flx_cil_cil.init -> Flx_cil_pretty.doc
val d_binop : unit -> Flx_cil_cil.binop -> Flx_cil_pretty.doc
val d_attr : unit -> Flx_cil_cil.attribute -> Flx_cil_pretty.doc
val d_attrparam : unit -> Flx_cil_cil.attrparam -> Flx_cil_pretty.doc
val d_attrlist : unit -> Flx_cil_cil.attributes -> Flx_cil_pretty.doc
val d_instr : unit -> Flx_cil_cil.instr -> Flx_cil_pretty.doc
val d_label : unit -> Flx_cil_cil.label -> Flx_cil_pretty.doc
val d_stmt : unit -> Flx_cil_cil.stmt -> Flx_cil_pretty.doc
val d_block : unit -> Flx_cil_cil.block -> Flx_cil_pretty.doc
val d_global : unit -> Flx_cil_cil.global -> Flx_cil_pretty.doc
val dn_exp : unit -> Flx_cil_cil.exp -> Flx_cil_pretty.doc
val dn_lval : unit -> Flx_cil_cil.lval -> Flx_cil_pretty.doc
val dn_init : unit -> Flx_cil_cil.init -> Flx_cil_pretty.doc
val dn_type : unit -> Flx_cil_cil.typ -> Flx_cil_pretty.doc
val dn_global : unit -> Flx_cil_cil.global -> Flx_cil_pretty.doc
val dn_attrlist : unit -> Flx_cil_cil.attributes -> Flx_cil_pretty.doc
val dn_attr : unit -> Flx_cil_cil.attribute -> Flx_cil_pretty.doc
val dn_attrparam : unit -> Flx_cil_cil.attrparam -> Flx_cil_pretty.doc
val dn_stmt : unit -> Flx_cil_cil.stmt -> Flx_cil_pretty.doc
val dn_instr : unit -> Flx_cil_cil.instr -> Flx_cil_pretty.doc
val d_shortglobal : unit -> Flx_cil_cil.global -> Flx_cil_pretty.doc
val dumpGlobal :
Flx_cil_cil.cilPrinter ->
Pervasives.out_channel -> Flx_cil_cil.global -> unit
val dumpFile :
Flx_cil_cil.cilPrinter ->
Pervasives.out_channel -> Flx_cil_cil.file -> unit
val bug : ('a, unit, Flx_cil_pretty.doc) Pervasives.format -> 'a
val unimp : ('a, unit, Flx_cil_pretty.doc) Pervasives.format -> 'a
val error : ('a, unit, Flx_cil_pretty.doc) Pervasives.format -> 'a
val errorLoc :
Flx_cil_cil.location ->
('a, unit, Flx_cil_pretty.doc) Pervasives.format -> 'a
val warn : ('a, unit, Flx_cil_pretty.doc) Pervasives.format -> 'a
val warnOpt : ('a, unit, Flx_cil_pretty.doc) Pervasives.format -> 'a
val warnContext : ('a, unit, Flx_cil_pretty.doc) Pervasives.format -> 'a
val warnContextOpt : ('a, unit, Flx_cil_pretty.doc) Pervasives.format -> 'a
val warnLoc :
Flx_cil_cil.location ->
('a, unit, Flx_cil_pretty.doc) Pervasives.format -> 'a
val d_plainexp : unit -> Flx_cil_cil.exp -> Flx_cil_pretty.doc
val d_plaininit : unit -> Flx_cil_cil.init -> Flx_cil_pretty.doc
val d_plainlval : unit -> Flx_cil_cil.lval -> Flx_cil_pretty.doc
val d_plaintype : unit -> Flx_cil_cil.typ -> Flx_cil_pretty.doc
type undoAlphaElement
type alphaTableData
val newAlphaName :
alphaTable:(string, Flx_cil_cil.alphaTableData Pervasives.ref) Hashtbl.t ->
undolist:Flx_cil_cil.undoAlphaElement list Pervasives.ref option ->
lookupname:string -> string * Flx_cil_cil.location
val registerAlphaName :
alphaTable:(string, Flx_cil_cil.alphaTableData Pervasives.ref) Hashtbl.t ->
undolist:Flx_cil_cil.undoAlphaElement list Pervasives.ref option ->
lookupname:string -> unit
val docAlphaTable :
unit ->
(string, Flx_cil_cil.alphaTableData Pervasives.ref) Hashtbl.t ->
Flx_cil_pretty.doc
val getAlphaPrefix : lookupname:string -> string
val undoAlphaChanges :
alphaTable:(string, Flx_cil_cil.alphaTableData Pervasives.ref) Hashtbl.t ->
undolist:Flx_cil_cil.undoAlphaElement list -> unit
val uniqueVarNames : Flx_cil_cil.file -> unit
val peepHole2 :
(Flx_cil_cil.instr * Flx_cil_cil.instr -> Flx_cil_cil.instr list option) ->
Flx_cil_cil.stmt list -> unit
val peepHole1 :
(Flx_cil_cil.instr -> Flx_cil_cil.instr list option) ->
Flx_cil_cil.stmt list -> unit
exception SizeOfError of Flx_cil_cil.typ
val bitsSizeOf : Flx_cil_cil.typ -> int
val sizeOf : Flx_cil_cil.typ -> Flx_cil_cil.exp
val alignOf_int : Flx_cil_cil.typ -> int
val bitsOffset : Flx_cil_cil.typ -> Flx_cil_cil.offset -> int * int
val char_is_unsigned : bool Pervasives.ref
val little_endian : bool Pervasives.ref
val locUnknown : Flx_cil_cil.location
val get_instrLoc : Flx_cil_cil.instr -> Flx_cil_cil.location
val get_globalLoc : Flx_cil_cil.global -> Flx_cil_cil.location
val get_stmtLoc : Flx_cil_cil.stmtkind -> Flx_cil_cil.location
val dExp : Flx_cil_pretty.doc -> Flx_cil_cil.exp
val dInstr :
Flx_cil_pretty.doc -> Flx_cil_cil.location -> Flx_cil_cil.instr
val dGlobal :
Flx_cil_pretty.doc -> Flx_cil_cil.location -> Flx_cil_cil.global
val mapNoCopy : ('a -> 'a) -> 'a list -> 'a list
val mapNoCopyList : ('a -> 'a list) -> 'a list -> 'a list
val startsWith : string -> string -> bool
type formatArg =
Fe of Flx_cil_cil.exp
| Feo of Flx_cil_cil.exp option
| Fu of Flx_cil_cil.unop
| Fb of Flx_cil_cil.binop
| Fk of Flx_cil_cil.ikind
| FE of Flx_cil_cil.exp list
| Ff of (string * Flx_cil_cil.typ * Flx_cil_cil.attributes)
| FF of (string * Flx_cil_cil.typ * Flx_cil_cil.attributes) list
| Fva of bool
| Fv of Flx_cil_cil.varinfo
| Fl of Flx_cil_cil.lval
| Flo of Flx_cil_cil.lval option
| Fo of Flx_cil_cil.offset
| Fc of Flx_cil_cil.compinfo
| Fi of Flx_cil_cil.instr
| FI of Flx_cil_cil.instr list
| Ft of Flx_cil_cil.typ
| Fd of int
| Fg of string
| Fs of Flx_cil_cil.stmt
| FS of Flx_cil_cil.stmt list
| FA of Flx_cil_cil.attributes
| Fp of Flx_cil_cil.attrparam
| FP of Flx_cil_cil.attrparam list
| FX of string
val d_formatarg : unit -> Flx_cil_cil.formatArg -> Flx_cil_pretty.doc
end