package goblint-cil

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type
module E = Errormsg

compute use/def information

module VS : sig ... end
val getUseDefFunctionRef : (Cil.exp -> Cil.exp list -> VS.t * VS.t * Cil.exp list) ref

Set this global to how you want to handle function calls. This also returns a modified argument list which will be used for the purpose of Use analysis, in case you have a function that needs special treatment of its args.

val considerVariableUse : (Cil.varinfo -> bool) ref

Say if you want to consider a variable use. This applies to variable reads only; see also considerVariableAddrOfAsUse

val considerVariableDef : (Cil.varinfo -> bool) ref

Say if you want to consider a variable def

val considerVariableAddrOfAsUse : (Cil.varinfo -> bool) ref

Say if you want to consider a variable addrof as a use

val considerVariableAddrOfAsDef : (Cil.varinfo -> bool) ref

Say if you want to consider a variable addrof as a def

val extraUsesOfExpr : (Cil.exp -> VS.t) ref

Return any vars that should be considered "used" by an expression, other than the ones it refers to directly. Deputy uses this for variables in Cast annotations.

val onlyNoOffsetsAreDefs : bool ref
val ignoreSizeof : bool ref

Should we ignore the contents of sizeof and alignof?

val varUsed : VS.t ref
val varDefs : VS.t ref
val useDefVisitor : useDefVisitorClass
val computeUseExp : ?acc:VS.t -> Cil.exp -> VS.t

Compute the use information for an expression (accumulate to an existing * set)

val computeUseDefInstr : ?acc_used:VS.t -> ?acc_defs:VS.t -> Cil.instr -> VS.t * VS.t

Compute the use/def information for an instruction

val computeUseDefStmtKind : ?acc_used:VS.t -> ?acc_defs:VS.t -> Cil.stmtkind -> VS.t * VS.t

Compute the use/def information for a statement kind. Do not descend into * the nested blocks.

val computeDeepUseDefStmtKind : ?acc_used:VS.t -> ?acc_defs:VS.t -> Cil.stmtkind -> VS.t * VS.t
val computeUseLocalTypes : ?acc_used:VS.t -> Cil.fundec -> VS.t