module Cabs2cil:NDC added command line parameter. Turn on tranformation that forces correct parameter evaluation ordersig
..end
val convFile : Cabs.file -> Cil_types.file
val forceRLArgEval : bool Pervasives.ref
val nocil : int Pervasives.ref
val allowDuplication : bool Pervasives.ref
val typeForInsertedVar : (Cil_types.typ -> Cil_types.typ) Pervasives.ref
val typeForInsertedCast : (Cil_types.exp -> Cil_types.typ -> Cil_types.typ -> Cil_types.typ)
Pervasives.ref
typeForInsertedVar
, but for casts.
typeForInsertedCast expr original_type destination_type
returns the type into which expr
, which has type original_type
and
whose type must be converted into destination_type
, must be casted.
By default, returns destination_type
.
This applies only to implicit casts. Casts already present
in the source code are exempt from this hook.
val fresh_global : string -> string
fresh_global prefix
creates a variable name not clashing with any other
globals and starting with prefix
val prefix : string -> string -> bool
s
starts with the prefix p
.val annonCompFieldName : string
val conditionalConversion : Cil_types.typ -> Cil_types.typ -> Cil_types.typ
val arithmeticConversion : Cil_types.typ -> Cil_types.typ -> Cil_types.typ
val integralPromotion : Cil_types.typ -> Cil_types.typ
val blockInitializer : Cilutil.LvalSet.t ->
Cil_types.varinfo ->
Cabs.init_expression -> Cil_types.block * Cil_types.init * Cil_types.typ
val blockInit : Cil_types.lval -> Cil_types.init -> Cil_types.typ -> Cil_types.block
init
applied to lvalue lval
of type typ
.val mkAddrOfAndMark : Cil_types.lval -> Cil_types.exp
mkAddrOf
after marking variable whose address is taken.val setDoTransformWhile : unit -> unit
continue
in while loops get transformed
into forward gotos, like it is already done in do-while and for loops.val setDoAlternateConditional : unit -> unit
val setDoAlternateAssign : unit -> unit