@ -589,27 +589,27 @@ module Prune = struct
let gen_prune_alias_functions ~ prune_alias_core integer_type_widths comp x e astate =
let gen_prune_alias_functions ~ prune_alias_core integer_type_widths comp x e astate =
(* [val_prune_eq] is applied when the alias type is [AliasTarget.Eq]. *)
(* [val_prune_eq] is applied when the alias type is [AliasTarget.Eq]. *)
let val_prune_eq =
let val_prune_eq =
match comp with
match ( comp : Binop . t ) with
| Binop . Lt | Binop . Gt | Binop . Le | Binop . Ge ->
| Lt | Gt | Le | Ge ->
Val . prune_ com p comp
Val . prune_ bino p comp
| Binop . Eq ->
| Eq ->
Val . prune_eq
Val . prune_eq
| Binop . Ne ->
| Ne ->
Val . prune_ne
Val . prune_ne
| _ ->
| _ ->
assert false
assert false
in
in
(* [val_prune_le] is applied when the alias type is [AliasTarget.Le]. *)
(* [val_prune_le] is applied when the alias type is [AliasTarget.Le]. *)
let val_prune_le =
let val_prune_le =
match comp with
match ( comp : Binop . t ) with
| Binop . Lt ->
| Lt ->
(* when [alias_target <= alias_key < e], prune [alias_target] with [alias_target < e] *)
(* when [alias_target <= alias_key < e], prune [alias_target] with [alias_target < e] *)
Some ( Val . prune_ com p comp )
Some ( Val . prune_ bino p comp )
| Binop . Le | Binop . Eq ->
| Le | Eq ->
(* when [alias_target <= alias_key = e] or [alias_target <= alias_key <= e], prune
(* when [alias_target <= alias_key = e] or [alias_target <= alias_key <= e], prune
[ alias_target ] with [ alias_target < = e ] * )
[ alias_target ] with [ alias_target < = e ] * )
Some ( Val . prune_ comp Binop . Le )
Some ( Val . prune_ binop Le )
| Binop . Ne | Binop . Gt | Binop . Ge ->
| Ne | Gt | Ge ->
(* when [alias_target <= alias_key != e], [alias_target <= alias_key > e] or [alias_target
(* when [alias_target <= alias_key != e], [alias_target <= alias_key > e] or [alias_target
< = alias_key > = e ] , no prune * )
< = alias_key > = e ] , no prune * )
None
None