let change_loc_status values state loc status =
(match loc.loc with
| Location_Bits.Top _ -> Options.warning "analysis degenerated"
| _ -> ());
match status with
| Status s ->
let s = L.inject s (status_of_deps values state) in
{ state with map = M.add_binding state.map loc s }
| Location l ->
let conv s =
let deps = S.join (status_of_deps values state) (L.snd s) in
L.inject (L.fst s) deps
in
(try
let f (b, s) = b, conv s in
{ state with map = M.copy_paste ~f l loc state.map }
with Lmap_bitwise.Bitwise_cannot_copy ->
let s = find_loc_status state l in
{ state with map = M.add_binding state.map loc (conv s) })