Skip to content

Commit 2917999

Browse files
committed
Use VS domain instead of AD for MustProtectedVars
1 parent 3879fdc commit 2917999

3 files changed

Lines changed: 8 additions & 13 deletions

File tree

src/analyses/commonPriv.ml

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -60,15 +60,10 @@ struct
6060
ask.f (Q.MustBeProtectedBy {mutex=m; global=x; write=true; protection})
6161

6262
let protected_vars (ask: Q.ask): varinfo list =
63-
let module VS = Set.Make (CilType.Varinfo) in
6463
Q.AD.fold (fun m acc ->
65-
Q.AD.fold (fun l acc ->
66-
match l with
67-
| Q.AD.Addr.Addr (v,_) -> VS.add v acc (* always `NoOffset from mutex analysis *)
68-
| _ -> acc
69-
) (ask.f (Q.MustProtectedVars {mutex = m; write = true})) acc
70-
) (ask.f Q.MustLockset) VS.empty
71-
|> VS.elements
64+
Q.VS.join (ask.f (Q.MustProtectedVars {mutex = m; write = true})) acc
65+
) (ask.f Q.MustLockset) (Q.VS.empty ())
66+
|> Q.VS.elements
7267
end
7368

7469
module MutexGlobals =

src/analyses/mutexAnalysis.ml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,8 +240,8 @@ struct
240240
| Queries.MustProtectedVars {mutex = m; write} ->
241241
let protected = GProtected.get ~write Strong (G.protected (ctx.global (V.protected m))) in
242242
VarSet.fold (fun v acc ->
243-
Queries.AD.join (Queries.AD.of_var v) acc
244-
) protected (Queries.AD.empty ())
243+
Queries.VS.add v acc
244+
) protected (Queries.VS.empty ())
245245
| Queries.IterSysVars (Global g, f) ->
246246
f (Obj.repr (V.protecting g)) (* TODO: something about V.protected? *)
247247
| WarnGlobal g ->

src/domains/queries.ml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ type _ t =
114114
| CreatedThreads: ConcDomain.ThreadSet.t t
115115
| MustJoinedThreads: ConcDomain.MustThreadSet.t t
116116
| ThreadsJoinedCleanly: MustBool.t t
117-
| MustProtectedVars: mustprotectedvars -> AD.t t
117+
| MustProtectedVars: mustprotectedvars -> VS.t t
118118
| Invariant: invariant_context -> Invariant.t t
119119
| InvariantGlobal: Obj.t -> Invariant.t t (** Argument must be of corresponding [Spec.V.t]. *)
120120
| WarnGlobal: Obj.t -> Unit.t t (** Argument must be of corresponding [Spec.V.t]. *)
@@ -179,7 +179,7 @@ struct
179179
| CreatedThreads -> (module ConcDomain.ThreadSet)
180180
| MustJoinedThreads -> (module ConcDomain.MustThreadSet)
181181
| ThreadsJoinedCleanly -> (module MustBool)
182-
| MustProtectedVars _ -> (module AD)
182+
| MustProtectedVars _ -> (module VS)
183183
| Invariant _ -> (module Invariant)
184184
| InvariantGlobal _ -> (module Invariant)
185185
| WarnGlobal _ -> (module Unit)
@@ -243,7 +243,7 @@ struct
243243
| CreatedThreads -> ConcDomain.ThreadSet.top ()
244244
| MustJoinedThreads -> ConcDomain.MustThreadSet.top ()
245245
| ThreadsJoinedCleanly -> MustBool.top ()
246-
| MustProtectedVars _ -> AD.top ()
246+
| MustProtectedVars _ -> VS.top ()
247247
| Invariant _ -> Invariant.top ()
248248
| InvariantGlobal _ -> Invariant.top ()
249249
| WarnGlobal _ -> Unit.top ()

0 commit comments

Comments
 (0)