@ -433,11 +433,11 @@ module Val = struct
let trace = if Loc . is_global l then Trace . Global l else Trace . Parameter l in
let trace = if Loc . is_global l then Trace . Global l else Trace . Parameter l in
TraceSet . singleton location trace
TraceSet . singleton location trace
in
in
let itv_val ~ boolean =
let itv_val ~ non_int =
let l = Loc . of_path path in
let l = Loc . of_path path in
let traces = traces_of_loc l in
let traces = traces_of_loc l in
let unsigned = Typ . is_unsigned_int typ in
let unsigned = Typ . is_unsigned_int typ in
of_itv ~ traces ( Itv . of_normal_path ~ unsigned ~ boolean path )
of_itv ~ traces ( Itv . of_normal_path ~ unsigned ~ non_int path )
in
in
let ptr_to_c_array_alloc deref_path size =
let ptr_to_c_array_alloc deref_path size =
let allocsite = Allocsite . make_symbol deref_path in
let allocsite = Allocsite . make_symbol deref_path in
@ -450,10 +450,10 @@ module Val = struct
( if may_last_field then " , may_last_field " else " " )
( if may_last_field then " , may_last_field " else " " )
( if is_java then " , is_java " else " " ) ;
( if is_java then " , is_java " else " " ) ;
match typ . Typ . desc with
match typ . Typ . desc with
| Tint IBool ->
| Tint IBool | Tfloat _ | Tfun _ | TVar _ ->
itv_val ~ boolean : true
itv_val ~ non_int : true
| Tint _ | T float _ | T void | Tfun _ | TVar _ ->
| Tint _ | T void ->
itv_val ~ boolean : false
itv_val ~ non_int : false
| Tptr ( elt , _ ) ->
| Tptr ( elt , _ ) ->
if is_java | | SPath . is_this path then
if is_java | | SPath . is_this path then
let deref_kind =
let deref_kind =
@ -503,7 +503,7 @@ module Val = struct
let length = Itv . of_length_path ~ is_void : false path in
let length = Itv . of_length_path ~ is_void : false path in
of_java_array_alloc allocsite ~ length ~ traces
of_java_array_alloc allocsite ~ length ~ traces
| Some JavaInteger ->
| Some JavaInteger ->
itv_val ~ boolean : false
itv_val ~ non_int : false
| None ->
| None ->
let l = Loc . of_path path in
let l = Loc . of_path path in
let traces = traces_of_loc l in
let traces = traces_of_loc l in
@ -623,7 +623,7 @@ module MemPure = struct
match filter_loc loc with
match filter_loc loc with
| Some loop_head_loc ->
| Some loop_head_loc ->
let itv = Val . get_itv v in
let itv = Val . get_itv v in
if Itv . has_only_ boolean _symbols itv then acc
if Itv . has_only_ non_int _symbols itv then acc
else
else
Itv . range loop_head_loc itv | > Itv . ItvRange . to_top_lifted_polynomial
Itv . range loop_head_loc itv | > Itv . ItvRange . to_top_lifted_polynomial
| > Polynomials . NonNegativePolynomial . mult acc
| > Polynomials . NonNegativePolynomial . mult acc