You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
let pry = resourceset_to_priority (List.map names (Mutex.Lockset.ReverseAddrSet.elements ctx.local)) in
586
586
Queries.ID.of_int IInt@@IntOps.BigIntOps.of_int pry (* TODO: what ikind to use for priorities? *)
587
-
|Queries.Priorityvname -> begintryQueries.ID.of_int IInt@@IntOps.BigIntOps.of_int (Hashtbl.find offensivepriorities vname) with_ ->Queries.Result.top q end(* TODO: what ikind to use for priorities? *)
587
+
|Queries.Priorityvname -> begintryQueries.ID.of_int IInt@@IntOps.BigIntOps.of_int (Hashtbl.find offensivepriorities vname) withNot_found ->Queries.Result.top q end(* TODO: what ikind to use for priorities? *)
588
588
|Queries.MayBePublic{global=v; _} ->
589
589
let pry = resourceset_to_priority (List.map names (Mutex.Lockset.ReverseAddrSet.elements ctx.local)) in
mapp2 { fp2 =fun (typea) (module I:S with type t = a and type int_t = int_t) -> I.to_incl_list } x |> flat merge
2657
2652
2658
2653
2659
-
letpretty()= (funxs -> text "("++ (tryList.reduce (funab -> a ++ text ","++ b) xs with_ -> nil)++ text ")")% to_list % mapp { fp =fun (typea) (module I:S with type t = a) ->(* assert sf==I.short; *)I.pretty () } (* NOTE: the version above does something else. also, we ignore the sf-argument here. *)
2654
+
letpretty()= (funxs -> text "("++ (tryList.reduce (funab -> a ++ text ","++ b) xs withInvalid_argument_ -> nil)++ text ")")% to_list % mapp { fp =fun (typea) (module I:S with type t = a) ->(* assert sf==I.short; *)I.pretty () } (* NOTE: the version above does something else. also, we ignore the sf-argument here. *)
|k :: _, f :: _ -> compFullName k.fcomp = compFullName f.fcomp (* compinfo is cyclic, so we only check the name *)
407
+
|_,_ -> false(* can't say if struct is empty *)
407
408
in
408
409
(* 1. casting between structs of different type does not work
409
410
* 2. dereferencing a casted pointer works, but is undefined behavior because of the strict aliasing rule (compiler assumes that pointers of different type can never point to the same location)
0 commit comments