|
|
@ -21,13 +21,14 @@ let always_strong_update = true (* unsound but ok for bug catching *)
|
|
|
|
|
|
|
|
|
|
|
|
module Condition =
|
|
|
|
module Condition =
|
|
|
|
struct
|
|
|
|
struct
|
|
|
|
type t =
|
|
|
|
type t = {
|
|
|
|
{ idx : Itv.astate;
|
|
|
|
proc_name : Typ.Procname.t;
|
|
|
|
size : Itv.astate;
|
|
|
|
loc : Location.t;
|
|
|
|
proc_name : Typ.Procname.t;
|
|
|
|
id : string;
|
|
|
|
loc : Location.t;
|
|
|
|
trace : trace;
|
|
|
|
trace : trace;
|
|
|
|
idx : Itv.astate;
|
|
|
|
id : string }
|
|
|
|
size : Itv.astate;
|
|
|
|
|
|
|
|
}
|
|
|
|
[@@deriving compare]
|
|
|
|
[@@deriving compare]
|
|
|
|
and trace = Intra of Typ.Procname.t
|
|
|
|
and trace = Intra of Typ.Procname.t
|
|
|
|
| Inter of Typ.Procname.t * Typ.Procname.t * Location.t
|
|
|
|
| Inter of Typ.Procname.t * Typ.Procname.t * Location.t
|
|
|
@ -127,7 +128,7 @@ let check : t -> string option
|
|
|
|
&& Itv.Bound.le (Itv.lb c'.size) (Itv.lb c.idx) then
|
|
|
|
&& Itv.Bound.le (Itv.lb c'.size) (Itv.lb c.idx) then
|
|
|
|
Some Localise.BucketLevel.b3
|
|
|
|
Some Localise.BucketLevel.b3
|
|
|
|
(* other symbolic bounds are probably too noisy *)
|
|
|
|
(* other symbolic bounds are probably too noisy *)
|
|
|
|
else if Config.bo_debug <= 1 && (Itv.is_symbolic c.idx || Itv.is_symbolic c.size) then
|
|
|
|
else if Config.bo_debug <= 3 && (Itv.is_symbolic c.idx || Itv.is_symbolic c.size) then
|
|
|
|
None
|
|
|
|
None
|
|
|
|
else if filter1 c then
|
|
|
|
else if filter1 c then
|
|
|
|
Some Localise.BucketLevel.b5
|
|
|
|
Some Localise.BucketLevel.b5
|
|
|
|