let prepare_guard lval p =
try
let ptrs = get_read_addr (not (direct_lval lval)) p in
debug3 "[get_read_addr] = %a"
(Pretty_utils.pp_list ~sep:", " F.pp_data) ptrs;
let add_p g p =
let keep_p = if F.eq_data lval p then false else true in
if keep_p then F.p_and (disj lval p) g else g
in List.fold_left add_p F.p_true ptrs
with Wp_error.Error(model, msg) ->
Wp_parameters.warning
"Failed to compute guard in %s model because %s." model msg;
D.dummy()