Cilfacade
GoblintCil
utilities.
include module type of struct include Cilfacade0 end
Cilfacade functions to avoid dependency cycles.
Following functions are similar to Cil
versions, but return expression location instead of entire statement location, where possible.
Command for assigning an id to a varinfo. All varinfos directly created by Goblint should be modified by this method
class cleanCilPrinterClass : object ... end
Version of defaultCilPrinterClass
which excludes line directives and builtin signatures (in comments). Used for dbg.justcil-printer
.
val cleanCilPrinter : cleanCilPrinterClass
class addConstructors : GoblintCil.fundec list -> object ... end
val getFuns : GoblintCil.file -> startfuns
Returns the ikind of a TInt(_) and TEnum(_). Unrolls typedefs.
Cil.typeOf, etc reimplemented to raise sensible exceptions instead of printing all errors directly...
type typeOfError =
| RealImag_NonNumerical
unexpected non-numerical type for argument to __real__/__imag__
*)| StartOf_NonArray
typeOf: StartOf on a non-array
*)| Mem_NonPointer of GoblintCil.exp
typeOfLval: Mem on a non-pointer (exp)
*)| Index_NonArray of GoblintCil.exp * GoblintCil.typ
typeOffset: Index on a non-array
*)| Field_NonCompound of GoblintCil.fieldinfo * GoblintCil.typ
typeOffset: Field on a non-compound
*)exception TypeOfError of typeOfError
Cil.mkCast
using our typeOf
.
Make Cil.BinOp
with correct implicit casts inserted.
Pretty-print typsig like typ, because d_typsig
prints with CIL constructors.
class countFnVisitor : object ... end
Visitor to count locs appearing inside a fundec.
val fnvis : countFnVisitor
Count the number of unique locations appearing in fundec fn
. Uses Cilfacade.locs
hashtable for intermediate computations
module StmtH : sig ... end
val stmt_fundecs : GoblintCil.fundec StmtH.t ResettableLazy.t
val pseudo_return_to_fun : GoblintCil.fundec StmtH.t
val find_stmt_fundec : StmtH.key -> GoblintCil.fundec
Find fundec
which the stmt
is in.
module VarinfoH : sig ... end
val varinfo_fundecs : GoblintCil.fundec VarinfoH.t ResettableLazy.t
val find_varinfo_fundec : VarinfoH.key -> GoblintCil.fundec
Find fundec
by the function's varinfo
(has the function name and type).
module StringH : sig ... end
val name_fundecs : GoblintCil.fundec StringH.t ResettableLazy.t
val find_name_fundec : StringH.key -> GoblintCil.fundec
Find fundec
by the function's name.
val varinfo_roles : varinfo_role VarinfoH.t ResettableLazy.t
val find_varinfo_role : VarinfoH.key -> varinfo_role
Find the role of the varinfo
.
val is_varinfo_formal : VarinfoH.key -> bool
val find_scope_fundec : VarinfoH.key -> GoblintCil.fundec option
Find the scope of the varinfo
. If varinfo
is a local or a formal argument of fundec
, then returns Some fundec
. If varinfo
is a global or a function itself, then returns None
.
val original_names : string VarinfoH.t ResettableLazy.t
val find_original_name : VarinfoH.key -> string option
Find the original name (in input source code) of the varinfo
. If it was renamed by CIL, then returns the original name before renaming. If it wasn't renamed by CIL, then returns the same name. If it was inserted by CIL (or Goblint), then returns None
.
module IntH : sig ... end
class stmtSidVisitor : GoblintCil.stmt IntH.t -> object ... end
val stmt_sids : GoblintCil.stmt IntH.t ResettableLazy.t
val pseudo_return_stmt_sids : GoblintCil.stmt IntH.t
val find_stmt_sid : IntH.key -> GoblintCil.stmt
Find stmt
by its sid
.
module FunLocH : sig ... end
module LocSet : sig ... end
Contains the locations of the upjumping gotos and the respective functions * they are being called in.
Given a Cil.file
, reorders its globals
, inserts function declarations before function definitions. This function may be used after a code transformation to ensure that the order of globals yields a compilable program.