RaceAnalysis.Spec
Data race analyzer without base --- this is the new standard
include module type of struct include UnitAnalysis.Spec end
include module type of struct include Analyses.DefaultSpec end
module P = Analyses.UnitP
val vdecl : ('a, 'b, 'c, 'd) Analyses.man -> 'e -> 'a
val asm : ('a, 'b, 'c, 'd) Analyses.man -> 'a
val skip : ('a, 'b, 'c, 'd) Analyses.man -> 'a
val sync : ('a, 'b, 'c, 'd) Analyses.man -> 'e -> 'a
val paths_as_set : ('a, 'b, 'c, 'd) Analyses.man -> 'a list
module A = Analyses.UnitA
module D = Lattice.Unit
module C = Printable.Unit
val assign :
(D.t, 'a, 'b, 'c) Analyses.man ->
GoblintCil.lval ->
GoblintCil.exp ->
D.t
val branch : (D.t, 'a, 'b, 'c) Analyses.man -> GoblintCil.exp -> bool -> D.t
val body : (D.t, 'a, 'b, 'c) Analyses.man -> GoblintCil.fundec -> D.t
val return :
(D.t, 'a, 'b, 'c) Analyses.man ->
GoblintCil.exp option ->
GoblintCil.fundec ->
D.t
val enter :
(D.t, 'a, 'b, 'c) Analyses.man ->
GoblintCil.lval option ->
GoblintCil.fundec ->
GoblintCil.exp list ->
(D.t * D.t) list
val combine_assign :
(D.t, 'a, 'b, 'c) Analyses.man ->
GoblintCil.lval option ->
'd ->
GoblintCil.fundec ->
GoblintCil.exp list ->
'e ->
D.t ->
Queries.ask ->
D.t
val threadspawn :
('a, 'b, 'c, 'd) Analyses.man ->
multiple:'e ->
'f ->
'g ->
'h ->
'i ->
'a
module V : sig ... end
module MemoSet : sig ... end
module OneOffset : sig ... end
module OffsetTrie : sig ... end
module G : sig ... end
val side_vars :
('a, [> `Lifted2 of MemoSet.t ], 'b, [> `Right of CilType.Varinfo.t ])
Analyses.man ->
MemoSet.elt ->
unit
val side_access :
('a,
[> `Lifted1 of OffsetTrie.t | `Lifted2 of MemoSet.t ],
'b,
[> `Left of [ `Var of CilType.Varinfo.t | `Type of CilType.Typsig.t ]
| `Right of CilType.Varinfo.t ])
Analyses.man ->
Access.AS.elt ->
([ `Var of CilType.Varinfo.t | `Type of CilType.Typsig.t ] * Offset.Unit.t) ->
unit
val side_access_empty :
('a,
[> `Lifted1 of OffsetTrie.t | `Lifted2 of MemoSet.t ],
'b,
[> `Left of [ `Var of CilType.Varinfo.t | `Type of CilType.Typsig.t ]
| `Right of CilType.Varinfo.t ])
Analyses.man ->
([ `Var of CilType.Varinfo.t | `Type of CilType.Typsig.t ] * Offset.Unit.t) ->
unit
Side-effect empty access set for prefix-type_suffix race checking.
val type_suffix_memo : Access.Memo.t -> Access.Memo.t option
Get immediate type_suffix memo.
val find_type_suffix' :
('a,
[> `Bot | `Lifted1 of OffsetTrie.t ],
'b,
[> `Left of [ `Var of CilType.Varinfo.t | `Type of CilType.Typsig.t ] ])
Analyses.man ->
Access.Memo.t ->
Access.AS.t
val find_type_suffix :
('a,
[> `Bot | `Lifted1 of OffsetTrie.t ],
'b,
[> `Left of [ `Var of CilType.Varinfo.t | `Type of CilType.Typsig.t ] ])
Analyses.man ->
Access.Memo.t ->
Access.AS.t
Find accesses from all type_suffixes transitively.
val query :
('b, [> `Bot | `Lifted1 of OffsetTrie.t | `Lifted2 of MemoSet.t ], 'c, V.t)
Analyses.man ->
'a Queries.t ->
'a Queries.result
val event :
('a, 'b, 'c, 'd) Analyses.man ->
Events.t ->
('e,
[> `Lifted1 of OffsetTrie.t | `Lifted2 of MemoSet.t ],
'f,
[> `Left of [ `Var of CilType.Varinfo.t | `Type of CilType.Typsig.t ]
| `Right of CilType.Varinfo.t ])
Analyses.man ->
'a
val special :
(D.t,
[> `Lifted1 of OffsetTrie.t | `Lifted2 of MemoSet.t ],
'a,
[> `Left of [ `Var of CilType.Varinfo.t | `Type of CilType.Typsig.t ]
| `Right of CilType.Varinfo.t ])
Analyses.man ->
GoblintCil.lval option ->
GoblintCil.varinfo ->
GoblintCil.exp list ->
D.t