let select_stmt_lval set mark lval_str ~before ki ~scope ~eval kf =
assert (Db.Value.is_computed ());
if Cilutil.StringSet.is_empty lval_str
then set
else
let zone =
Cilutil.StringSet.fold
(fun lval_str acc ->
let lval_term = !Db.Properties.Interp.lval kf scope lval_str in
let lval = !Db.Properties.Interp.term_lval_to_lval lval_term in
let loc = !Db.Value.lval_to_loc ~with_alarms:CilE.warn_none_mode (Kstmt eval) lval in
let zone = Locations.valid_enumerate_bits loc
in Locations.Zone.join zone acc)
lval_str Locations.Zone.bottom
in select_stmt_zone set mark zone ~before ki kf