Module ThreadAnalysis.Spec

include module type of struct include Analyses.IdentitySpec end
include module type of struct include Analyses.DefaultSpec end

Relatively safe default implementations of some boring Spec functions.

type marshal = unit
val init : 'a -> unit
val finalize : unit -> unit
val vdecl : ('a, 'b, 'c, 'd) Analyses.ctx -> 'e -> 'f
val asm : ('a, 'b, 'c, 'd) Analyses.ctx -> 'e
val skip : ('a, 'b, 'c, 'd) Analyses.ctx -> 'e
val event : ('a, 'b, 'c, 'd) Analyses.ctx -> 'e -> 'f -> 'g
val morphstate : 'a -> 'b -> 'c
val sync : ('a, 'b, 'c, 'd) Analyses.ctx -> 'e -> 'f
val context : 'a -> 'b -> 'c -> 'd
val paths_as_set : ('a, 'b, 'c, 'd) Analyses.ctx -> 'e list
module A = Analyses.UnitA
val access : 'a -> 'b -> unit
val assign : ('a, 'b, 'c, 'd) Analyses.ctx -> GoblintCil.lval -> GoblintCil.exp -> 'e
val branch : ('a, 'b, 'c, 'd) Analyses.ctx -> GoblintCil.exp -> bool -> 'e
val body : ('a, 'b, 'c, 'd) Analyses.ctx -> GoblintCil.fundec -> 'e
val enter : ('a, 'b, 'c, 'd) Analyses.ctx -> GoblintCil.lval option -> GoblintCil.fundec -> GoblintCil.exp list -> ('e * 'f) list
val combine_env : 'a -> GoblintCil.lval option -> 'b -> GoblintCil.fundec -> GoblintCil.exp list -> 'c -> 'd -> Queries.ask -> 'e
val combine_assign : ('a, 'b, 'c, 'd) Analyses.ctx -> GoblintCil.lval option -> 'e -> GoblintCil.fundec -> GoblintCil.exp list -> 'f -> 'g -> Queries.ask -> 'h
val name : unit -> string
include sig ... end
module C : sig ... end
val startcontext : unit -> D.t
module V : sig ... end
module P : sig ... end
val handle_thread_return : (D.t, bool * TS.t * bool, 'a, ThreadIdDomain.Thread.t) Analyses.ctx -> GoblintCil.exp option -> unit
val return : (D.t, bool * TS.t * bool, 'a, ThreadIdDomain.Thread.t) Analyses.ctx -> GoblintCil.exp option -> 'b -> D.t
val is_not_unique : ('a, bool * TS.t * 'b, 'c, T.t) Analyses.ctx -> T.t -> bool
val special : (D.t, bool * TS.t * bool, 'a, T.t) Analyses.ctx -> GoblintCil.lval option -> GoblintCil.varinfo -> GoblintCil.exp list -> D.t
val query : (D.t, bool * TS.t * 'b, 'c, T.t) Analyses.ctx -> 'a Queries.t -> 'a0 Queries.result
val startstate : 'a -> D.t
val threadenter : ('a, bool * TS.t * bool, 'b, ThreadIdDomain.Thread.t) Analyses.ctx -> multiple:bool -> 'c -> 'd -> 'e -> D.t list
val threadspawn : (D.t, bool * TS.t * bool, 'a, ThreadIdDomain.Thread.t) Analyses.ctx -> multiple:'b -> 'c -> 'd -> 'e -> ('f, 'g, 'h, 'i) Analyses.ctx -> D.t
val exitstate : 'a -> D.t